gpt4 book ai didi

javascript - 获取Promise内单个函数的返回值

转载 作者:行者123 更新时间:2023-12-03 03:04:30 25 4
gpt4 key购买 nike

我有以下包含 Promise 的代码片段:

...
return Promise.all([postHTTP()])
.then(function (results) {
loginToken = results[0].data.token;
console.log("token:" + loginToken);
})
.catch(error => {
throw error;
});
...

函数:

function postHTTP() {
request.post({
headers: { 'content-type': 'application/json' },
url: 'http://localhost:55934/api/Token',
body: { "email": "test@test.pt", "password": "test" },
json: true
}, function (error, response, body) {
if (error) {
throw error;
}
console.log("return test");
return body.token;
});

尽管打印了字符串“Return test”,但它在上面的 Promised 中给出了一个错误,内容如下:

(node:15120) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'token' of undefined

任何人都可以帮我找到解决方案或问题根源吗?

提前致谢,迪奥戈·桑托斯

最佳答案

您的 postHTTP 函数中存在问题。当使用多个 Promise 时,您必须将 Promise 数组传递到 Promise.all 中,因此您的函数必须如下所示:

function postHTTP() {
return new Promise(function (resolve, reject) {
request.post({
headers: { 'content-type': 'application/json' },
url: 'http://localhost:55934/api/Token',
body: { "email": "test@test.pt", "password": "test" },
json: true
}, function (error, response, body) {
if (error) {
return reject(error);
}
console.log("return test");
return resolve(body.token);
});
});
}

关于javascript - 获取Promise内单个函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230855/

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