Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Q承诺-解决/拒绝逻辑-为什么不';你的承诺被拒绝了吗?_Javascript_Node.js_Promise_Q - Fatal编程技术网

Javascript Q承诺-解决/拒绝逻辑-为什么不';你的承诺被拒绝了吗?

Javascript 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返回的承诺确实被拒绝了 可能是代码中的其他内容使它看起来没有被拒绝 编辑: 我又

新的承诺,试图理解逻辑流程。我以为我明白了,直到我开始插入错误进行测试。在下面的示例中,当我注释掉第三行时,为什么不在承诺中返回Reject

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{拒绝(“获取洞察时出错”);}
。为什么不呢?