创build一个空的承诺

我有一个承诺的function,可能会或可能不会做一些事情。 例如

getYear().then(function(results){ if(results.is1999) return party(); else return Q.fcall(function(){/*do nothing here*/}); }).then(sleep) 

在哪里, partysleep都会回来。 有没有更简洁的方式来写入else语句? 也就是说,什么都不做,但还是会回报一个可以链接的承诺?

是。 Q(value)Q(value)返回一个承诺(如果value是承诺,它也展开价值)。

  getYear().then(function(results){ if(results.is1999) return party(); else return Q(undefined); }).then(sleep) 

或者,您可以通过不返回任何内容来获得完全相同的语义:

  getYear().then(function(results){ if(results.is1999) return party(); }).then(sleep) 

如果你想要的是一个永远不会解决的承诺,那么你最好的select就是

  getYear().then(function(results){ if(results.is1999) return party(); else return Q.promise(function () {}); }).then(sleep) 

你可以做的是重复使用相同的承诺:

  var stop = Q.promise(function () {}); getYear().then(function(results){ if(results.is1999) return party(); else return stop }).then(sleep)