为了学习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中经历了不同的问题和答案,但无法找出“未处理的承诺拒绝”是什么.
任何人都可以简单地解释一下它是什么以及什么错误:产生cmd ENOENT,当它出现时我需要检查以摆脱这个警告?
解决方法:
这个错误的根源在于,每个承诺都应该处理承诺拒绝,即具有.catch(…).您可以通过在代码中的promise中添加.catch(…)来避免相同的操作,如下所示.
例如,函数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");
});
在某些情况下,即使我们为promises编写了.catch(..),也会出现“未处理的promise promise”消息.这都是关于你如何编写代码的.即使我们正在处理catch,下面的代码也会生成“未处理的promise 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引擎将其视为承诺而没有未处理的承诺拒绝.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。