创build一个空的承诺
我有一个承诺的function,可能会或可能不会做一些事情。 例如
getYear().then(function(results){ if(results.is1999) return party(); else return Q.fcall(function(){/*do nothing here*/}); }).then(sleep)
在哪里, party
, sleep
都会回来。 有没有更简洁的方式来写入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)