相关疑难解决方法(0)

承诺不仅仅是回调吗?

我已经开发了几年的JavaScript,我根本不理解有关承诺的大惊小怪.

似乎我所做的只是改变:

api(function(result){
    api2(function(result2){
        api3(function(result3){
             // do work
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以使用像async这样的库,例如:

api().then(function(result){
     api2().then(function(result2){
          api3().then(function(result3){
               // do work
          });
     });
});
Run Code Online (Sandbox Code Playgroud)

哪个代码更多,可读性更低.我没有在这里获得任何东西,它也不会突然神奇地"平坦".更不用说必须将事物转换为承诺.

那么,这里的承诺有什么大惊小怪?

javascript callback promise q bluebird

402
推荐指数
7
解决办法
9万
查看次数

概念 - 提炼承诺如何运作?

我看过很多实现,它们看起来都很不一样,我无法真正提炼出承诺的本质.

如果我不得不猜测它只是一个在回调触发时运行的函数.

有人可以在几行代码中实现最基本的承诺.

例如,从这个答案

片段1

var a1 = getPromiseForAjaxResult(ressource1url);
a1.then(function(res) {
    append(res);
    return a2;
});
Run Code Online (Sandbox Code Playgroud)

如何传递函数以then了解何时运行.

也就是说,它如何传递回ajax在完成时触发的回调代码.

片段2

// generic ajax call with configuration information and callback function
ajax(config_info, function() {
    // ajax completed, callback is firing.
});
Run Code Online (Sandbox Code Playgroud)

这两个片段有何关联?

猜测:

// how to implement this

(function () {
    var publik = {};
        _private;
    publik.then = function(func){
        _private = func;
    };
    publik.getPromise = function(func){
        // ??
    };
    // ??
}())
Run Code Online (Sandbox Code Playgroud)

javascript

11
推荐指数
2
解决办法
3262
查看次数

标签 统计

javascript ×2

bluebird ×1

callback ×1

promise ×1

q ×1