Доступность внешней переменной в обещании в 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() вместо явной функции ошибки.