[英]Promise is returning <pending>
我已经为HTTP请求编写了一些代码。 在意识到request
是异步的之后,我用一个承诺重写了我的代码。 但这告诉我承诺尚未兑现。 我完全不知道为什么这是错误的。 这是我的代码:
function verifyUser(uname,pword){
var options = {
url: 'CENSORED',
method: 'POST',
headers: headers,
form: {'Username':uname, 'Password':pword, 'Key':key},
json:true
}
return new Promise((r,j) => request(options,(error,response,body)=>{
if(error){
console.log("[ERROR] Promise returned error");
throw j(error);
}
r(body);
}))
}
async function receiveWBBData(uspass,passwd){
const data = await verifyUser(uspass,passwd);
return data;
}
var test1 = receiveWBBData("r0b","CENSORED");
console.log(test1);`
提前致谢!
receiveWBBData
是异步的。 因此, test1
是一个承诺。 如果要记录结果,请执行test1.then(console.log).catch(console.error)
,或者如果希望在变量中使用结果,请使用var test1 = await receiveWBBData(/*...*/)
。 请注意, await
只能在异步功能中使用。
另外,正如@somethinghere所提到的,您不应抛弃诺言,而应将其退还。
异步函数总是返回promise 。 为了“解开”承诺,您需要await
它,因此您需要var test1 = await receiveWBBData("r0b","CENSORED");
。
顶层等待还不是该语言的一部分,因此我建议您添加一个名为main()
或run()
的函数,并在脚本启动时调用它。
async function receiveWBBData(uspass,passwd){
const data = await verifyUser(uspass,passwd);
return data;
}
async function main() {
var test1 = receiveWBBData("r0b","CENSORED");
console.log(test1);`
}
main().catch(error => console.error(error.stack));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.