我这样承诺
function getMode(){ var deferred = Promise.defer(); checkIf('A') .then(function(bool){ if(bool){ deferred.resolve('A'); }else{ return checkIf('B'); } }).then(function(bool){ if(bool){ deferred.resolve('B'); }else{ return checkIf('C'); } }).then(function(bool){ if(bool){ deferred.resolve('C'); }else{ deferred.reject(); } }); return deferred.promise; }
checkIf返回一个promise,yes checkIf 不能被修改 。
checkIf
我如何在第一场比赛中脱颖而出?(除了显式抛出错误以外,还有其他方法吗?)
我想你不想在这里连锁。以同步的方式,您会写
function getMode(){ if (checkIf('A')) { return 'A'; } else { if (checkIf('B')) { return 'B'; } else { if (checkIf('C')) { return 'C'; } else { throw new Error(); } } } }
这就是应如何将其转化为承诺:
function getMode(){ checkIf('A').then(function(bool) { if (bool) return 'A'; return checkIf('B').then(function(bool) { if (bool) return 'B'; return checkIf('C').then(function(bool) { if (bool) return 'C'; throw new Error(); }); }); }); }
if else诺言没有实现。
if else