Я знаю, что вы не можете заставить асинхронную функцию вести себя синхронно, но как мне добавить какой-то порядок в мою цепочку промисов?
Один результат зависит от предыдущего значения обещания, и когда этого не происходит, я получаю неопределенную ошибку. Это http-запрос, поэтому он зависит от внешних факторов, таких как скорость, с которой мое соединение может выполнить запрос и т. д.
module.exports.movieCheck = function(authToken) {
return request({
method : 'GET',
uri : 'https://graph.facebook.com/' + profileID + '/posts?fields=message&limit=25&' + authToken
}).spread(function (response, body) {
console.log('https://graph.facebook.com/' + profileID + '/posts?fields=message&limit=25&' + authToken);
return body;
}, function(e) {
console.log(e);
});
};
Я вызываю вышеуказанный метод следующим образом. Однако console.log возвращает неопределенное значение.
movieCheck.getToken()
.then(function(token) {
movieCheck.movieCheck(token);
})
.then(function(movies) {
console.log(movies); //should print json data
});
Терминальные отпечатки
undefined
https://graph.facebook.com/.../posts?fields=message&limit=25&access_token=....
.catch
для перехвата исключений при использовании цепочек промисов может стоить вам дорого. 14.07.2018