javascript - 在nodejs中使用async和await获取Promise { <pending> }

标签 javascript node.js async-await

就我而言,我能够获取 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 >async 函数以便使用它。如果您从 async 函数返回一个值,它将是返回的 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 模块产生的结果与这样编写的结果相同(不使用 asyncawait):

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/

相关文章:

javascript - 这些语法有什么区别请详细解释一下?

javascript - 如何将媒体查询添加到 Jquery 中

node.js - readFile 是否缓存内容?

c# - 为什么这段代码是同步运行的?

javascript - 将变量值附加到jquery中的id

javascript - 防止 Firebase 云功能中的竞争条件

javascript - Nativescript 在使用 formidable 处理输入的 Nodejs 服务器上上传图像

node.js - 如何导出和导入类型定义?

c# - 将异步/等待与结果混合

c# - ValueTask 有 ContinueWith 吗?