就我而言,我能够获取 token ,但不是我想要的方式,即我不想打印待处理的 promise ,并且在 tokenDisp.js 中运行后的输出是:
output: Promise { pending }
t5Npxk5FfnRTj8iHd8vyyfGxnhXR4KQf
登录.js:
module.exports = async function doLogin() {
const token = await loginToken();
const myToken = JSON.parse(token);
return console.log(myToken);
};
tokenDisp.js:
const myToken = require('./login.js);
myToken();
有人可以帮忙吗?
最佳答案
所有async
函数都会返回一个promise,并且您仍然必须对的返回值使用
函数以便使用它。如果您从 .then()
或await
>asyncasync
函数返回一个值,它将是返回的 Promise 的解析值。如果抛出异常,该异常将成为拒绝返回的 Promise 的原因。
在函数内部使用 await
可以方便地在异步函数内部使用。它不会神奇地将异步操作变成同步操作。所以,你的函数返回一个 promise 。要从中获取值,请对其使用 .then()
。
module.exports = async function doLogin() {
const token = await loginToken();
const myToken = JSON.parse(token);
console.log(myToken);
return myToken; // this will be resolved value of returned promise
};
const myToken = require('./login.js);
myToken().then(token => {
// got token here
}).catch(err => {
console.log(err);
});
<小时/>
注意:您的 login.js 模块产生的结果与这样编写的结果相同(不使用 async
或 await
):
module.exports = function doLogin() {
return loginToken().then(token => {
const myToken = JSON.parse(token);
console.log(myToken);
return myToken; // this will be resolved value of returned promise
});
};
关于javascript - 在nodejs中使用async和await获取Promise { <pending> },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267856/