我有以下代码片段包含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;
});
Altough the String" Return test"打印出来,它在上面的承诺中给出了一个错误,说明如下:
(node:15120) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'token' of undefined
任何人都可以帮我找到解决方案或问题来源吗?
提前致谢, 迪奥戈桑托斯
答案 0 :(得分:1)
postHTTP
功能中的问题。使用多承诺时,您必须将承诺数组传递给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);
});
});
}