gpt4 book ai didi

javascript - 什么是未处理的 promise 拒绝?

转载 作者:IT老高 更新时间:2023-10-28 13:18:37 24 4
gpt4 key购买 nike

为了学习 Angular 2,我正在尝试他们的教程。

我收到这样的错误:

(node:4796) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r                                                                                                     ejection id: 1): Error: spawn cmd ENOENT
[1] (node:4796) DeprecationWarning: Unhandled promise rejections are deprecated.
In the future, promise rejections that are not handled will terminate the Node.
js process with a non-zero exit code.

我在 SO 中经历了不同的问题和答案,但找不到“未处理的 Promise Rejection”是什么。

谁能简单地解释一下它是什么以及 Error: spawn cmd ENOENT 是什么,它何时出现以及我必须检查什么才能消除此警告?

最佳答案

这个错误的根源在于每个 promise 都应该处理 promise 拒绝,即有一个 .catch(...) 。您可以通过将 .catch(...) 添加到代码中的 promise 中来避免相同的情况,如下所示。

例如,函数 PTest() 将根据全局变量 somevar

的值解析或拒绝 promise
var somevar = false;
var PTest = function () {
return new Promise(function (resolve, reject) {
if (somevar === true)
resolve();
else
reject();
});
}
var myfunc = PTest();
myfunc.then(function () {
console.log("Promise Resolved");
}).catch(function () {
console.log("Promise Rejected");
});

在某些情况下,即使我们为 Promise 编写了 .catch(..),也会出现“未处理的 Promise 拒绝” 消息。这完全取决于您如何编写代码。即使我们正在处理 catch,以下代码也会生成 “未处理的 promise 拒绝”

var somevar = false;
var PTest = function () {
return new Promise(function (resolve, reject) {
if (somevar === true)
resolve();
else
reject();
});
}
var myfunc = PTest();
myfunc.then(function () {
console.log("Promise Resolved");
});
// See the Difference here
myfunc.catch(function () {
console.log("Promise Rejected");
});

不同之处在于您不将 .catch(...) 作为链处理,而是作为单独的。由于某种原因,JavaScript 引擎将其视为没有未处理的 Promise 拒绝的 Promise。

关于javascript - 什么是未处理的 promise 拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com