有人可以解释为什么这不起作用:
var outsideVar = 15;
myFunc.doSomething().then(function() {
console.log("outsideVar: " + outsideVar);
}).fail(function(err) {
console.log("error: ", err);
});
输出错误:undefined或outsideVar:undefined(取决于outsideVar是对象的变量或属性。
外部变量应该可以从函数内部访问,或者我错了?
编辑:我在spookyjs中使用这个结构,似乎包含很长字符串的对象存在问题。答案 0 :(得分:1)
在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()不是节点中可识别的函数,除非您已明确定义.fail()函数。 .fail()抛出未定义的错误。 nodejs中的.fail()用于构建单元测试,而不是承诺。 https://nodejs.org/api/assert.html
否则,写得不错,关闭应该有效。这是典型的闭包语法。有关带闭包的承诺的更多详细信息,请参阅Is promise a closure?。
编辑您也可以使用.catch()而不是显式错误函数。