有人可以解释一下为什么这不起作用:
var outsideVar = 15;
myFunc.doSomething().then(function() {
console.log("outsideVar: " + outsideVar);
}).fail(function(err) {
console.log("error: ", err);
});
输出是错误:未定义或outsideVar:未定义(取决于outsideVar是否是对象的变量或属性。
外部变量应该可以从函数内部访问,还是我错了?
编辑:我正在使用 spookyjs 的这种结构,并且包含很长字符串的对象似乎存在问题。
最佳答案
在 NodeJS 中,您可以使用一个函数来处理错误。就像这样:
myPromise.then(function() {
// callback, executed on successful promise resolution
}, function() {
// errback, executed on rejection
}, function() {
// progressback, executed if the promise has progress to report
});
.fail() 不是 Node 中可识别的函数,除非您显式定义了 .fail() 函数。 .fail() 抛出未定义的错误。 Nodejs 中的 .fail() 用于构建单元测试,而不是 Promise。 https://nodejs.org/api/assert.html
否则,如果编写得当,闭包应该可以工作。这是典型的闭包语法。请参阅Is promise a closure?有关带有闭包的 promise 的更多详细信息。
编辑您还可以使用 .catch() 而不是显式错误函数。
关于javascript - Nodejs 中 Promise 中外部变量的可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949684/