nodejs中promise中的外部变量的可访问性

时间:2015-04-29 16:39:32

标签: javascript node.js promise q spookyjs

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

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

输出错误:undefined或outsideVar:undefined(取决于outsideVar是对象的变量或属性。

外部变量应该可以从函数内部访问,或者我错了?

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

1 个答案:

答案 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()而不是显式错误函数。