为了账号安全,请及时绑定邮箱和手机立即绑定

以下代码输出什么?为什么?

以下代码输出什么?为什么?

慕姐8265434 2019-02-26 20:09:35
const token = (async () => {  const token = await new Promise(resolve => {     setTimeout(() => resolve("abc"), 2000);   });  console.log("1", token);  return token; })();console.log("2", token);
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

const token = (async () => {  const token = await new Promise(resolve => {
    setTimeout(() => resolve("abc"), 2000);
  });  console.log("1", token);  // 1  abc
  return token;  // 无卵用语句  async函数自动 return Promise})();console.log("2", token);  // 2 Promise对象

在async function里面,return await没用。由于async function总是包含返回值Promise.resolve,除非在总体 Promise 解析或拒绝之前添加额外时间,否则实际上return await不会执行任何操作。这种模式几乎肯定是因为程序员无视async function的返回语义。


查看完整回答
反对 回复 2019-02-26
?
繁花如伊

TA贡献2012条经验 获得超12个赞

先2后1

2里边的token是一个变量赋值所以不用等异步执行完毕
因为1里边有token 而token在异步函数作用域里边,需要异步代码执行结束才会有结果


查看完整回答
反对 回复 2019-02-26
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

打开chrome ,按F12,把代码输到控制台里按回车

查看完整回答
反对 回复 2019-02-26
  • 3 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信