Как получить обещание разрешить естественно с помощью request-обещания - PullRequest
0 голосов
/ 01 марта 2019

Я использую модуль request-promise-native на node.js.API, который я вызываю, возвращает необходимые данные через GET.Это работает просто отлично.

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

const request = require('request-promise-native');

async function usdToEos () {
  const options = {
    method: 'GET'
    ,uri: 'https://api.coincap.io/v2/assets/eos'
    ,json: true
  }
  const response = await request(options)
    .then(response => {
      console.log(response)
      return (1 / response.data.priceUsd)
    })
    .catch(error => {
      console.log('\nCaught exception: ' + error);
    })
}

var usdToEosMul = usdToEos()
console.log('\n' + 'USD multiplier to convert to EOS' + '\n')
console.log(usdToEosMul)

Как мне получить возвращаемое значение как ... данные ... (1 / response.data.priceUsd).Это видно в ... console.log (ответ) ... но не в переменной usdToEosMul.

1 Ответ

0 голосов
/ 01 марта 2019

функция, которая, поскольку ей предшествует async, возвращает обещание

Похоже, вы уже почти ответили на свой вопрос.Вам придется подождать это обещание на вашем сайте:

usdToEos().then(usdToEosMul => {
  console.log('\n' + 'USD multiplier to convert to EOS' + '\n')
  console.log(usdToEosMul)
}).catch(error => {
  console.log('\nCaught exception: ' + error)
})

function usdToEos() {
  const options = {
    method: 'GET'
    ,uri: 'https://api.coincap.io/v2/assets/eos'
    ,json: true
  }
  return request(options).then(response => {
    console.log(response)
    return (1 / response.data.priceUsd)
  })
}

или

;(async function() {
  try {
    const usdToEosMul = await usdToEos()
    console.log('\n' + 'USD multiplier to convert to EOS' + '\n')
    console.log(usdToEosMul)
  } catch(error) {
    console.log('\nCaught exception: ' + error)
  }
}())

async function usdToEos() {
  const options = {
    method: 'GET'
    ,uri: 'https://api.coincap.io/v2/assets/eos'
    ,json: true
  }
  const response = await request(options)
  console.log(response)
  return (1 / response.data.priceUsd)
}
...