从承诺中获取请求数据 (RIOT API)
Get request data from a promise (RIOT API)
我有一个来自 NodeJs 的“请求”请求,我想通过承诺获取数据。一切都很好,因为控制台显示了我所请求的信息。问题是当我调用 promise 函数时,控制台向我显示了这个。我怎样才能得到真正的价值?
let leagueTier = (accId) => new Promise(async (resolve, reject) => {
request({
url: `https://${reg}.api.riotgames.com/lol/league/v4/entries/by-summoner/${accId}${key}`,
json: true
}, (error, response, body) => {
if (!error && response.statusCode === 200) {
resolve(body[0].tier.toLowerCase())
} else {
reject(Error('It broke'))
}
})
}).then(function(res) {
return res;
})
这是我调用函数的地方
.attachFiles([`./images/${leagueTier(body.id)}.png`])
(node:5868) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, stat 'D:\Dev\shen-bot\images[object Promise].png'
如何访问我发出的请求的字符串?也许我不应该使用承诺?
leagueTier
return 值将是一个承诺,最终解析或拒绝为一个值。您不能简单地将 return 值添加为字符串的一部分。您可以使用 await
or then
等待值通过。
// asuming you are in async function context
.attachFiles([`./images/${await leagueTier(body.id)}.png`]);
// or
leagueTier(body.id).then(tier => {
.attachFiles([`./images/${tier}.png`]);
});
请注意您当前的代码:
.then(function(res) {
return res;
})
什么都不做,可以省略。
我有一个来自 NodeJs 的“请求”请求,我想通过承诺获取数据。一切都很好,因为控制台显示了我所请求的信息。问题是当我调用 promise 函数时,控制台向我显示了这个。我怎样才能得到真正的价值?
let leagueTier = (accId) => new Promise(async (resolve, reject) => {
request({
url: `https://${reg}.api.riotgames.com/lol/league/v4/entries/by-summoner/${accId}${key}`,
json: true
}, (error, response, body) => {
if (!error && response.statusCode === 200) {
resolve(body[0].tier.toLowerCase())
} else {
reject(Error('It broke'))
}
})
}).then(function(res) {
return res;
})
这是我调用函数的地方
.attachFiles([`./images/${leagueTier(body.id)}.png`])
(node:5868) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, stat 'D:\Dev\shen-bot\images[object Promise].png'
如何访问我发出的请求的字符串?也许我不应该使用承诺?
leagueTier
return 值将是一个承诺,最终解析或拒绝为一个值。您不能简单地将 return 值添加为字符串的一部分。您可以使用 await
or then
等待值通过。
// asuming you are in async function context
.attachFiles([`./images/${await leagueTier(body.id)}.png`]);
// or
leagueTier(body.id).then(tier => {
.attachFiles([`./images/${tier}.png`]);
});
请注意您当前的代码:
.then(function(res) {
return res;
})
什么都不做,可以省略。