javascript - 如何通过 request-promise-native 获得自然解决的承诺
问题描述
我request-promise-native
在 node.js 上使用模块。我正在调用的 API 通过 GET 返回所需的数据。这工作得很好。
但是,当我尝试从函数中获取数据时,因为它前面有 Async 返回一个 Promise,所以我无法正确获取语法。这是我尝试过的:
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(response) ... 中可见,但在变量 usdToEosMul 中不可见。
解决方案
因为它前面有一个函数
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)
}
推荐阅读
- python - SimPy:TypeError:schedule() 缺少 1 个必需的位置参数:“事件”
- amazon-web-services - AWS 代码构建:CI 作业期间未找到环境变量
- ios - 代码中的 UIStackView 设置 layoutMargins 会中断对齐
- numbers - 雪花:无法评估不受支持的子查询类型
- vbscript - 检查随机数是否已经存在VBscript
- grails - 如何在 Grails 4 中向创建和编辑表单添加多个枚举字段?
- python - 在 VBA 中传入多个参数以运行 Python 脚本
- javascript - 如何用reactjs中的锚标记替换字符串中的文本
- node.js - 是否建议将 Docker 与 AWS Elastic beanstalk 一起使用?
- c++ - 太空侵略者:射击时列中的所有敌人都会死亡