ネイティブJavaScript(ES5)を使用して、Promiseと同等の機能(非同期コールバック)を実装します

従来の文章を約束する

let promise = new Promise((resolve, reject)=>{
    //做一些异步操作
    setTimeout(function () {
        resolve("成功");
    }, 1000);
    setTimeout(function () {
        reject("失败");
    }, 2000);
});
promise.then(d => {
    console.log(d);
}).catch(d => {
    console.log(d);
});

//输出“成功”

JavaScript(ES5)の実装

var promise = function (__then, __catch) {
    var _done = false;//记录是否已经执行了回调函数
    //做一些异步操作
    setTimeout(function () {
        _done || __then && __then("成功"),_done = true;
    }, 1000);
    setTimeout(function () {
        _done || __catch && __catch("失败"), _done = true;
    }, 2000);
};
promise(function(d) {
    console.log(d);
}, function(d) {
    console.log(d);
});

//输出“成功”

おすすめ

転載: blog.csdn.net/qq_37860634/article/details/123724807