示例代码:
Queues.findOne({_id: id})
.then(function(q) {
var status = q.status;
//...
}).then(function(q) {
// A
}).then(function(q) {
// B
}).then(function(q) {
// C
}).then(function(q) {
// D
}).then(function(q) {
// E
}).then(function(q) {
// F
})
根据状态,流程会有所不同
如果状态为1
,则A/B/C/D/E/F
应该全部执行。
如果状态为2
,则应执行C/D/E/F
,如何跳过A
和B
?
如果状态为3
,则应执行E/F
,如何跳过A/B/C/D
?
最佳答案
你可以使用
Queues.findOne({_id: id}).then(function(q) {
var status = q.status;
var x = Promise.resolve();
var y = status <= 1 ? x.then(A).then(B) : x;
var z = status <= 2 ? x.then(C).then(D) : y;
return z.then(E).then(F);
}
关于javascript - 如何在promise(bluebird)中跳过一些then?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910472/