Javascript Q承诺-解决/拒绝逻辑-为什么不';你的承诺被拒绝了吗?
新的承诺,试图理解逻辑流程。我以为我明白了,直到我开始插入错误进行测试。在下面的示例中,当我注释掉第三行时,为什么不在承诺中返回RejectJavascript Q承诺-解决/拒绝逻辑-为什么不';你的承诺被拒绝了吗?,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,新的承诺,试图理解逻辑流程。我以为我明白了,直到我开始插入错误进行测试。在下面的示例中,当我注释掉第三行时,为什么不在承诺中返回Reject var Q=require(“Q”) var getInstallBase=function(){ 返回新承诺(函数(解析、拒绝){ //var IBdata='temp IBdata';//请查看此JSBin: 它包含代码的简化版本,如您所见,从getInstallBase返回的承诺确实被拒绝了 可能是代码中的其他内容使它看起来没有被拒绝 编辑: 我又
var Q=require(“Q”)
var getInstallBase=function(){
返回新承诺(函数(解析、拒绝){
//var IBdata='temp IBdata';//请查看此JSBin:
它包含代码的简化版本,如您所见,从getInstallBase
返回的承诺确实被拒绝了
可能是代码中的其他内容使它看起来没有被拒绝
编辑:
我又看了一遍代码,结果是这样的——被拒绝的承诺被以下人抓住了:
function(error) {
console.log('something went wrong', error);
extractInsightCycle();
}
它调用extractInsightCycle
,这是启动整个过程的函数,这会导致无限循环(实际上是无止境的递归)。请查看此JSBin:
它包含代码的简化版本,如您所见,从getInstallBase
返回的承诺确实被拒绝了
可能是代码中的其他内容使它看起来没有被拒绝
编辑:
我又看了一遍代码,结果是这样的——被拒绝的承诺被以下人抓住了:
function(error) {
console.log('something went wrong', error);
extractInsightCycle();
}
调用启动整个过程的函数extractInsightCycle
,这会导致无限循环(实际上是无止境的递归)。你所说的“拒绝不会在承诺中返回”是什么意思?catch
回调不会执行吗?你所说的“拒绝不会在承诺中得到返回”?catch
回调不会执行吗?谢谢。是的,你说得对,是其他因素使它看起来不拒绝-这归结为我缺乏理解。以下是我没有得到的:1)我希望看到“获取IBdata时出错”“返回并显示在某个地方,为什么不呢?3)所有错误都会被捕获,但您可以完全删除else{reject(“error getting insight”);}
,并且您会得到与它存在时相同的结果,那么有什么意义呢?如果您使用console.log('show me'))在拒绝之前的'else'中,它不会被记录到控制台-例如if(insight){resolve(insight);//状态将被满足}else{reject(“error getting insight”);}
。为什么不呢?谢谢。是的,你说得对。是其他原因让它看起来没有被拒绝——这可以归结为我缺乏理解。以下是我没有得到的:1)我希望看到“获取IBdata时出错”返回并显示在某个地方,为什么不呢?3)所有错误都会被捕获,但你可以完全删除其他错误{reject(“error getting insight”);}
,您得到的结果与它存在时相同,那么这有什么意义呢?如果您在拒绝之前的'else'中的console.log('show me'),它不会被记录到控制台中-例如If(insight){resolve(insight);//State will been completed}else{拒绝(“获取洞察时出错”);}
。为什么不呢?