Задать вопрос
Sanu0074
@Sanu0074

Как использовать async/await без лишних коллбэков?

Из прочитанного про async/await, я понял что эта конструкция должна упростить код, избавить разработчиков от лишних коллбэков. Я запустил такой пример:

var request = require('request');
var async = require('asyncawait/async');
var await = require('asyncawait/await');

function getQuote() {
  var quote;

  return new Promise(function(resolve, reject) {
    request('http://ron-swanson-quotes.herokuapp.com/v2/quotes', function(error, response, body) {
      quote = body;
      resolve(quote);
    });
  });
}

var main = async (()=>{
  var quote = await(getQuote());
  console.log(quote);
});

main();

console.log('Ron once said,');

В консоли вижу следующее:

Ron once said,
["Great job, everyone..."]

Это говорит о том, что main() срабатывает после console.log('Ron once said,').

Но в чем суть тогда, если один-черт нужно передавать коллбэк в main() чтобы сначала получить результат запроса, а потом что-то с ним делать?

Как добиться того, чтобы в данном примере сначала сработал main() а потом console.log()?
  • Вопрос задан
  • 332 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Sanu0074
@Sanu0074 Автор вопроса
let getData = () => {
    return new Promise(function(resolve, reject) {
        setTimeout(() => {
            resolve('Great job, everyone...');
        }, 500);
    });
};

(async () => {
    let main = async ()=> {
        console.log(await getData());
    };

    await main();
    console.log('Ron once said,');
})();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Вам не надо указывать async, если вы хотите чтобы сначала main вызвался.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы