Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 未兑现(承诺)是什么意思?_Javascript_Promise - Fatal编程技术网

Javascript 未兑现(承诺)是什么意思?

Javascript 未兑现(承诺)是什么意思?,javascript,promise,Javascript,Promise,我想知道什么是承诺,所以我开始了 我从指南中复制了此代码,并在开发人员控制台中进行了尝试: var promise = new Promise(function(resolve, reject) { // do a thing, possibly async, then… if (false) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } }); 我收到一个错误,说Unc

我想知道什么是承诺,所以我开始了

我从指南中复制了此代码,并在开发人员控制台中进行了尝试:

var promise = new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (false) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});

我收到一个错误,说
Uncaught(在promise中)错误:它坏了
。我不明白这是什么意思。有人能解释一下吗?

承诺可以是解决的,也可以是拒绝的。如果是If/when解析任何
,则将调用
函数。如果被拒绝,将调用任何
catch
函数。如果您没有提供任何
catch
函数,那么promise可能会打印该警告

功能测试(失败){
返回新承诺((解决、拒绝)=>{
如果(失败){
拒绝();
}否则{
解决();
}
});
}
//是否打印拒绝1
测试(真)
.then(()=>{console.log('resolved 1');})
.catch(()=>{console.log('rejected 1');})
//可能会产生告诉你承诺的错误
//被拒绝,但您没有提供catch函数
测试(真)

。然后(()=>{console.log('resolved 2');})
这意味着您的承诺抛出了一个未捕获的错误

i、 你没有按你的承诺打电话给catch()


在你的情况下,if(false)永远不会评估为truthy,因此你的承诺会被拒绝。

这意味着承诺被拒绝,而拒绝在任何地方都没有得到处理。
newpromise()
中的参数
函数(resolve,reject)
几乎在声明时被激发。我错误地认为
函数(resolve,reject)
将是一个回调函数,只有在我运行
承诺时才会触发。然后(fn1,fn2)
。您的示例代码帮助我实现了这一点。传递给
的函数随后将被调用。传递给
newpromise
的函数立即被调用。