Callback Nodejs, ждать ответа

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Есть код:
Код:
const request = require('request');

function api(method, params)
{
    var options = {
        'url': 'http://site.ru/api/'+method,
        'headers': {
            'Auth-Key': 'EOx40BancbsVL6ppcD78roCIzDrGWVpYpYtmu3pwy7n'
        }
    };
   
    request.get(options, params, function(error, response, body){
      // И что далее?
   });

}

Должно быть: я вызываю api() с некоторыми параметрами, отправляется запрос, приходит ответ - функция api возвращает ответ.

Как это организовать не знаю. Дока по классу request: Для просмотра ссылки Войди или Зарегистрируйся
 
я, вероятно, не понимаю о чем именно вопрос, тогда сразу прошу прощения.
в ином случае, о чем он именно?)
ну тоесть, у Вас есть вариант с этим интерфейсом использовать обычные коллбеки в виде дом. параметра функции передаваемой в request.get или вызова в ней функции, которая найдется сверху из-за замыканий
или доставить и использовать интерфейс промисов этой же либы
 
я, вероятно, не понимаю о чем именно вопрос, тогда сразу прошу прощения.
в ином случае, о чем он именно?)
ну тоесть, у Вас есть вариант с этим интерфейсом использовать обычные коллбеки в виде дом. параметра функции передаваемой в request.get или вызова в ней функции, которая найдется сверху из-за замыканий
или доставить и использовать интерфейс промисов этой же либы
Думаю надо промисы использовать, но как их сюда добавить? Надо чтобы функция api возвращала ответ, который попадает в callback функцию. Если я сделаю return в callback функции, то этот ответ не попадет обратно в функцию api
 
я кажется понял теперь что Вы хотите.
а так не работает?
Код:
function api(method, params)
{
    var options = {
        'url': 'http://site.ru/api/'+method,
        'headers': {
            'Auth-Key': 'EOx40BancbsVL6ppcD78roCIzDrGWVpYpYtmu3pwy7n'
        }
    };
   
   return request.get(options, params, function(error, response, body){
     return response;
   });

}
 
я кажется понял теперь что Вы хотите.
а так не работает?
Код:
function api(method, params)
{
    var options = {
        'url': 'http://site.ru/api/'+method,
        'headers': {
            'Auth-Key': 'EOx40BancbsVL6ppcD78roCIzDrGWVpYpYtmu3pwy7n'
        }
    };

   return request.get(options, params, function(error, response, body){
     return response;
   });

}
Не работает.
return request.get возвращает объект запроса не дожидаясь когда этот запрос будет совершен, а return response; уходит просто в воздух.
Поэтому я и не могу сделать

Понял что эта библиотека не поддерживает промисы и удалил её, поставил Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху