У меня есть следующий код в файле node.js;Вызов другого прототипа после завершения обещания
GameHelperAuth.prototype.GetUserViaApi = Promise.method(function (authCookie, callback) {
// get user from API
});
GameHelperAuth.prototype.GetObjectFromCache = Promise.method(function (authCookie, callback) {
// get user from Cache
});
GameHelperAuth.prototype.GetUser = function (authCookie, callback) {
// check cache
this.GetObjectFromCache()
.then(function (result) {
if (result) {
return callback(null, result);
}
else {
// not found in cache, get it from API
// **NOT WORKING HERE - undefined error**
this.GetUserViaApi(authCookie)
.then(function (apiResult) {
return callback(null, apiResult);
}).catch(function (err) {
throw err;
});
}
})
.catch(function (err) {
throw err;
});
Я хотел бы получить доступ к моему методу экземпляра из другого метода экземпляра после того, как обещание завершено. Но похоже, что он теряет контекст и больше не может найти функцию. (Пожалуйста, см., Где я вызываю метод GetUserViaApi)
Есть ли способ для достижения этого метода без создания нового экземпляра моего класса?
Не принимать аргументы обратного вызова - возвращать обещания. Если вы _must_ используете обратные вызовы, используйте nodeify для правильного перевода –
Вы использовали функцию 'var self' или функцию функции стрелки? – Alnitak
На данный момент, как простая реализация, я использовал себя. Будет ли рефакторинг стрелкой в следующем выпуске. –