Ответ 1
Да. Q(value)
возвращает обещание для 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)
Если бы вы хотели, было обещание, которое никогда не разрешалось, лучшим выбором было бы
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)