как запустить в одной функции два последовательных request запроса?

186
30 сентября 2018, 23:40

нужно последовательно запустить два request запроса(модуль в javascript), условия не асинхронно.

request(url, function(err, res, body){
    some code
  }).then(() {
    request(url_next_link, function(err, res, bodys){
some another code
})

это то как я пробовал) ну как бы не работает такой варик)

Answer 1

У вас синтаксическая ошибка в коде

.then(() { // <== это что такое???
    request(url_next_link, function(err, res, bodys){
        some another code
    })
})

Если используете request, то он умеет возвращать Promise ( ссылка ) и тогда вашу задачу можно решить через async/await

async function getServerData() {
    const result = await request(url, data);
    const result1 = await request(url2, result);
    return result1;
}
const result2 = getServerData();

Можно написать свою обертку простую

const asyncRequest = (...args) => new Promise((resolve, reject) => {
    request(...args, function(err, res, bodys) {
        if(err) reject(err);
        resolve(res, bodys);
    }
});

Используем

const {res, bodys} = await asyncRequest(url, data);
const {res, bodys} = await asyncRequest(url2, data2);
READ ALSO
Помогите чуть допилить скрипт

Помогите чуть допилить скрипт

Скрипт, чтоб при открытии одного попапа, другой попап закрывался (если он на тот момент открыт)Спасибо

156
Браузер не видит js-функцию

Браузер не видит js-функцию

Подключил скрипт language="javascript" type="text/javascript" src="script/SCRIPTjs"

187
AngularJs, почему не может найти контроллер?

AngularJs, почему не может найти контроллер?

подключил вебпак и angular вылетает с ошибкой

171