Как я могу использовать значение тела вне этого метода? - PullRequest
0 голосов
/ 18 мая 2018
var request = require('request');

var boardsCall = {
  method: 'GET',
  url: 'https://api.trello.com/1/organizations/xxxxxxxxxx/boards?filter=open&fields=id,name',
  qs: {
    key: 'xxxxxxxxxxxxxxxx',
    token: 'xxxxxxxxxxxxxxxxxxxxxxxxx'
  }
};

function test(url, callback) {
  request(url, function(error, response, body) {
    if (error) {
      return callback(error);
    }
    callback(null, JSON.parse(body));
  })
}
const x = test(boardsCall, function(err, body) {
  if (err) {
    console.log(err);
  }
  else {
    return body;
  }
})

console.log(x);

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

1 Ответ

0 голосов
/ 18 мая 2018

В моем запросе на заход на посадку обернуто Promise, тестовая функция возвращает ответ Promise.Внутри основной метод тестовая функция будет выполняться синхронно.После того, как значение ответа назначено x, выполните оставшуюся логику обработки в методе main().

var request = require('request');

var boardsCall = {
  method: 'GET',
  url: 'https://api.trello.com/1/organizations/xxxxxxxxxx/boards?filter=open&fields=id,name',
  qs: {
    key: 'xxxxxxxxxxxxxxxx',
    token: 'xxxxxxxxxxxxxxxxxxxxxxxxx'
  }
};

function test(url) {
    //Wrapping request callback with Promise
    return new Promise((res, rej)=> {
        request(url, function(error, response, body) {
            if (error) {
              rej(error);
            }
            res(JSON.parse(body));
          })
    })
}

async function main() {
    try {
        const x = await test(boardsCall);       
        console.log("Result : ", x );

        // Remaining logic to process based on x value

    } catch(e) {
        console.error("Error :", e);
    }


}

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