Ecma 6承诺完成

时间:2015-12-21 16:57:08

标签: ajax promise ecmascript-6

我正在尝试使用ES6中的Promise,但我找不到像jQuery ajax那样完整的替代方法。我需要在所有已注册的处理程序之后用“then”执行函数。

谢谢!

1 个答案:

答案 0 :(得分:2)

如Bergi所述,你想要的是disposer pattern。你对承诺的中心概念似乎有些偏离,我认为这使得你更难以推理。当您致电.then时,您在概念上并非“附加处理程序”,您正在创建一个新的承诺,根据定义在所有.then处理程序运行后解析

鉴于您的核心问题基于以下代码:

// a.js
module.exports = function(){
    // Where 'Promise.resolve()' is a stand in for your ajax.
    return Promise.resolve()
        .then(function(){
            // Want this to run after 'B'.
        });
}

// b.js
var makePromise = require('./a');
module.exports = function specialMakePromise(){
    return makePromise().then(function(){
        // Should run first.
    });
}

它们将始终以错误的顺序运行,因为根据定义,.then中的a.js处理程序必须在.then的{​​{1}}处理程序之前运行并完成。

解决此问题的一种方法是改为构建代码:

b.js