Доступность внешней переменной в обещании в nodejs

Может кто-нибудь объяснить мне, почему это не работает:

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

вывод - ошибка: undefined или outsideVar: undefined (зависит от того, является ли outsideVar переменной или свойством объекта.

Внешняя переменная должна быть доступна изнутри функции или я ошибаюсь?

РЕДАКТИРОВАТЬ: Я использую эту конструкцию с spookyjs, и, кажется, есть проблема с объектами, содержащими очень длинные строки.

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 () выбрасывает неопределенную ошибку. .fail() в nodejs используется для создания модульных тестов, а не обещаний. https://nodejs.org/api/assert.html

В противном случае, правильно написано, закрытие должно работать. Это типичный синтаксис закрытия. Видите ли обещание закрытие? для более подробной информации об обещаниях с закрытиями.

РЕДАКТИРОВАТЬ Вы также можете использовать.catch() вместо явной функции ошибки.

Другие вопросы по тегам