Javascript 如何跳过一些然后在承诺(蓝鸟)?

Javascript 如何跳过一些然后在承诺(蓝鸟)?,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,示例代码: 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 })

示例代码:

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);
}
Queues.findOne({u id:id}).then(函数(q){
var状态=q状态;
var x=Promise.resolve();

var y=status所以你要通过你的链传递
q
?然后直接写出来,
if(q.status我希望
。然后(function(q){var status=q.status;})。然后(function(q){//A
在您的问题中缺少了一段重要的代码,这段代码存在于实际代码中,因为
q
at
//A
保证
未定义