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