【发布时间】:2018-09-12 13:54:05
【问题描述】:
也许我只是不理解承诺,但我以前使用过这种模式并且从未遇到过问题。在节点内使用 bluebird。
我有这个功能正在被击中:
function getStores() {
return new Bluebird((resolve, reject) => {
return Api.Util.findNearbyStores(Address,(stores) => {
if (!stores.result) {
console.log('one')
reject('no response');
console.log('two')
}
const status = stores.results.status
})
})
}
然后点击我的两个日志,继续通过 if 并抛出
'one'
'two'
TypeError: Cannot read property 'Status' of undefined
基本上它一直在解决问题。
我的印象是,promise 应该在拒绝时立即短路,并将拒绝通过作为对 promise 的解决方案。我是不是误会了?
【问题讨论】:
-
reject 没有退出函数,在 if 中添加一个 return,另外,你不使用 resolve,所以你永远不会从 getStores() 得到结果
-
你从来没有打电话给
resolve?