0

有人可以解释一下为什么这不起作用:

var outsideVar = 15;
myFunc.doSomething().then(function() {
  console.log("outsideVar: " + outsideVar);
}).fail(function(err) {
  console.log("error: ", err);
});

输出为 error: undefined 或 outsideVar: undefined (取决于 outsideVar 是变量还是对象的属性。

外部变量应该可以从函数内部访问还是我错了?

编辑:我将这种结构与 spookyjs 一起使用,似乎包含很长字符串的对象存在问题。

4

1 回答 1

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

否则,如果写得正确,闭包应该可以工作。这是典型的闭包语法。请参阅Promise 是否关闭?有关带有闭包的承诺的更多详细信息。

编辑您也可以使用 .catch() 而不是显式错误函数。

于 2015-04-29T16:49:48.467 回答