您现在的位置是:网站首页> HTML&JS

JS异步变同步

  • HTML&JS
  • 2022-02-25
  • 756人已阅读
摘要

async getImageInfo({ imgSrc }) {

            return new Promise((resolve, errs) => {

                uni.getImageInfo({

                    src: imgSrc,

                    success: function(image) {

                        resolve(image);

                    },

                    fail(err) {

                        errs(err);

                    }

                });

            });

        }



// 调用方法

let _imgInfo = await _this.getImageInfo({ imgSrc: _this.HeadImg }); //头像图



const getData = (url, param) => {

  return new Promise((resolve, reject) => {

    wx.request({

      url: url,

      method: 'GET',

      data: param,

      success (res) {

        console.log(res)

        resolve(res.data)

      },

      fail (err) {

        console.log(err)

        reject(err)

      }

    })

  })

}


var myFirstPromise = new Promise(function(resolve, reject){

    //当异步代码执行成功时,我们才会调用resolve(...), 当异步代码失败时就会调用reject(...)

    //在本例中,我们使用setTimeout(...)来模拟异步代码,实际编码时可能是XHR请求或是HTML5的一些API方法.

    setTimeout(function(){

        resolve("成功!"); //代码正常执行!

    }, 250);

});

 

myFirstPromise.then(function(successMessage){

    //successMessage的值是上面调用resolve(...)方法传入的值.

    //successMessage参数不一定非要是字符串类型,这里只是举个例子

    document.write("Yay! " + successMessage);

});



对于已经实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和 reject 方法作为回调。


promise.then() 是 promise 最为常用的方法。


promise.then(onFulfilled, onRejected)

promise简化了对error的处理,上面的代码我们也可以这样写:


promise.then(onFulfilled).catch(onRejected);


实例

function ajax(URL) {

    return new Promise(function (resolve, reject) {

        var req = new XMLHttpRequest(); 

        req.open('GET', URL, true);

        req.onload = function () {

        if (req.status === 200) { 

                resolve(req.responseText);

            } else {

                reject(new Error(req.statusText));

            } 

        };

        req.onerror = function () {

            reject(new Error(req.statusText));

        };

        req.send(); 

    });

}

var URL = "/try/ajax/testpromise.php"; 

ajax(URL).then(function onFulfilled(value){

    document.write('内容是:' + value); 

}).catch(function onRejected(error){

    document.write('错误:' + error); 

});




上一篇:JS在线混淆工具

下一篇:HBuilderX开发Vue

Top