gpt4 book ai didi

javascript - 请求 Promise 不返回值(Node JS)

转载 作者:行者123 更新时间:2023-11-29 20:51:21 24 4
gpt4 key购买 nike

我一直在努力让它工作一段时间,我的请求 promise 没有返回它找到的流光。当我在请求的 .then 部分中使用 console.log(streamer) 时,它会起作用。有什么想法吗?

function getStreamerByName(name){
var streamer;
var options = {
url: "https://api.twitch.tv/helix/users?login=" + name,
method: 'GET',
headers: {
'Client-ID': 'CLIENT_ID',
}
};
requestP(options)
//SPREAD
.spread(function(res, body) {
streamer_data = JSON.parse(body);
})
//THEN
.then(function (body) {
streamer = ({
twitch_id: streamer_data["data"][0]["id"],
name: streamer_data["data"][0]["display_name"],
image: streamer_data["data"][0]["profile_image_url"],
description: streamer_data["data"][0]["description"]
});
Streamer.create(streamer);
return streamer;
})
//CATCH
.catch(function (err) {
console.log(err);
return streamer;
});
}

最佳答案

您需要返回 promise 链:

function getStreamerByName(name){
var streamer;
var options = {
url: "https://api.twitch.tv/helix/users?login=" + name,
method: 'GET',
headers: {
'Client-ID': 'CLIENT_ID',
}
};
//A return was added here
return requestP(options)
//SPREAD
.spread(function(res, body) {
streamer_data = JSON.parse(body);
})
//THEN
.then(function (body) {
streamer = ({
twitch_id: streamer_data["data"][0]["id"],
name: streamer_data["data"][0]["display_name"],
image: streamer_data["data"][0]["profile_image_url"],
description: streamer_data["data"][0]["description"]
});
Streamer.create(streamer);
return streamer;
})
//CATCH
.catch(function (err) {
console.log(err);
return streamer;
});
}

当您在外部使用所有这些函数时,您还需要使用 .then() 来获取结果或使用异步函数并等待。

所以

async caller() {
var value = await getStreamerByName('stuff')
}

caller() {
getStreamerByName('stuff').then((result) => { //do stuff })
}

关于javascript - 请求 Promise 不返回值(Node JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51710421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com