【发布时间】:2016-02-17 09:45:51
【问题描述】:
我需要在 Promise 链的中间添加一个 userID 参数(这是唯一需要它的 Promise)。所有的承诺都应该以同步的顺序执行。
SideNote-stackoverflow 上的所有类似示例都有些不同-例如使用 lambda 函数(我使用声明的函数)。所以我仍然不太确定。
var initialize = function(userID) {
var firstPromise = Module2.getFirstPromise();
firstPromise.then(getSecondPromise)
.then(getThirdPromise)
.then(getFourthPromise) //<----Fourth promise needs userID
.then(getFifthPromise)
.then(Utils.initializeComplete);
}
所有的 Promise 都是如下所示的函数:
var thirdPromise = function() {
return new Promise(function(resolve, reject) {
//fetch data
//On Return, Store it
resolve() //Nothing needed to passed down from this promise
});
});
}
我正在尝试这个,它“有效”,但我不确定这是否是我“假设”处理此类事情的方式。 :)
var initialize = function(userID) {
var firstPromise = Module2.getFirstPromise();
firstPromise.then(getSecondPromise)
.then(getThirdPromise)
.then(function(){ return fourthPromise(userID)})
.then(getFourthPromise)
.then(Utils.initializeComplete);
}
注意:getFirstPromise 来自我代码中的不同模块。不过,这对这个问题应该不重要:)
【问题讨论】:
-
你的问题有点不清楚。您是否收到错误或意外结果?
-
这真的很令人困惑,你有
firstPromise,它显然是指一个承诺,然后是secondPromise等等,它似乎是指函数。我建议更改该命名。 -
除了其他 cmets 之外,您传递具有访问
userID范围的内联函数的方法很好,并且是公认的模式。 -
@T.J.Crowder 我在第二个 sn-p 中描述了所有其他函数的样子。不知道如何才能更清楚,但我愿意提出建议。
-
@NickPineda:你不认为
firstPromise是一个承诺而secondPromise是一个函数 令人困惑吗?!至于建议,看我的回答。
标签: javascript promise ecmascript-6 es6-promise