Возвращение строки из цепочки обещаний, которая завершает вызов API - PullRequest
0 голосов
/ 30 августа 2018

У меня есть функция, которая выполняет запрос POST и возвращает строку в зависимости от результата вызова API. Я изо всех сил пытаюсь вернуть эту строку.

Я знаю, что нижеприведенное не будет работать, поскольку оно просто возвращает непарсированный JSON, но вызов API завершается.

return request('POST', url, { json: payload } )
        .then((res) => {
            let response = JSON.parse(res.getBody('utf8'));

            if(response['IsSuccess'] == true){
                return "Success String"
            }
            else if(response['Description']){
                return response['Description']
            }
            else{
                return BOOKING_ENGINE_FAILURE_MESSAGE;
            }

        })

Как бы я сделал этот функционал? Я использую зависимость тогда-запроса в среде Firebase Node 6.

1 Ответ

0 голосов
/ 30 августа 2018

Все, что вы вернете из обещания, также будет заключено в обещание, чтобы вы могли продолжить цепочку:

return request('POST', url, { json: payload } )
.then((res) => {
  let response = JSON.parse(res.getBody('utf8'));
  DialogflowHelper.logout_user(auth_token);
  if(response['IsSuccess'] == true){
    return "Success String"
  }
  else if(response['Description']){
    return response['Description']
  }
  else{
    return BOOKING_ENGINE_FAILURE_MESSAGE;
  }
})
.then( str => {
  // do something with the string we returned in the previous promise handler.
});

Или вы можете продолжить цепочку, откуда вы генерируете этот ответ:

const create_request = ( url, payload ) => request('POST', url, { json: payload } )
.then((res) => {
  let response = JSON.parse(res.getBody('utf8'));
  DialogflowHelper.logout_user(auth_token);
  if(response['IsSuccess'] == true){
    return "Success String"
  }
  else if(response['Description']){
    return response['Description']
  }
  else{
    return BOOKING_ENGINE_FAILURE_MESSAGE;
  }
});

create_request().then( str => {
  // do something with the string we returned in the previous promise handler.
});

Как только вы начинаете цепочку обещаний, лучше продолжать работать с цепочкой. Вы можете использовать цепочку для обновления некоторой внешней переменной, но это также включает проверку того, когда вы можете начать использовать эту переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...