pra*_*uss 17 node.js promise q
我在承诺链中有一个功能,可能会或可能不会做某事.例如
getYear().then(function(results){
if(results.is1999) return party();
else return Q.fcall(function(){/*do nothing here*/});
}).then(sleep)
Run Code Online (Sandbox Code Playgroud)
何处getYear,party以及sleep所有回报承诺.是否有更简洁的方式来编写else语句?也就是说,什么都不做,但仍然会回归可靠的承诺?
For*_*say 26
是. Q(value)返回一个承诺value(如果value是一个承诺,它也会释放值).
getYear().then(function(results){
if(results.is1999) return party();
else return Q(undefined);
}).then(sleep)
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过不返回任何内容来获得完全相同的语义:
getYear().then(function(results){
if(results.is1999) return party();
}).then(sleep)
Run Code Online (Sandbox Code Playgroud)
如果您想要的是一个永远不会解决的承诺,那么您最好的选择就是
getYear().then(function(results){
if(results.is1999) return party();
else return Q.promise(function () {});
}).then(sleep)
Run Code Online (Sandbox Code Playgroud)
你能做的就是重复使用同样的承诺:
var stop = Q.promise(function () {});
getYear().then(function(results){
if(results.is1999) return party();
else return stop
}).then(sleep)
Run Code Online (Sandbox Code Playgroud)