javascript - Nodejs 中 Promise 中外部变量的可访问性

标签 javascript node.js promise q spookyjs

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

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/

相关文章:

javascript - 使用 DOMParser 解析的脚本不执行

javascript - Node.js 生态系统中在哪里存储大量媒体文件?

javascript - 为什么我的 promise 不替换构造函数中的数据?

javascript - 解析javascript for循环,创建多个不重复的对象

javascript - HTML 表单 - 类似于对象数组的输入组

javascript - 在 NodeJS 的 catch block 中使用 continue 语句

javascript - 使用nodejs意外 token 在bash脚本for循环中执行java程序

javascript - $.when.apply 应用于 Promise 数组

express - 快速异步/等待错误处理

javascript - 无法通过 hashchange 正确地将 URL 写入 HREF