javascript - 如何控制台记录 promise ?

标签 javascript es6-promise

为什么这段代码不能打印任何内容?

预期结果应该是异步结果是:2。但它是0。

"use strict"

// run consoleLogPromise
consoleLogPromise( PromiseAChangeCount() );

// a utility which will always console log any promise 

async function consoleLogPromise(callback) {
  //const res = await callback(); TypeError: callback is not a function
  const res = await callback;
  console.log("async result is: ", res);
}

// a promise returning function
async function PromiseAChangeCount() {
  let count = 0;
  await setTimeout(() => {
    count = 2
  }, 200);
   return count;
}

最佳答案

你必须做这样的事情。返回 PromiseAChangeCount 的 promise 它解析 setTimeout 中的值,然后就可以在consoleLogPromise里面等待了

"use strict"

// run consoleLogPromise
consoleLogPromise(PromiseAChangeCount());

// a utility which will always console log any promise 

async function consoleLogPromise(callback) {
  //const res = await callback(); TypeError: callback is not a function
  const res = await callback;
  console.log("async result is: ", res);
}

// a promise returning function
async function PromiseAChangeCount() {
  let count = 0;
  return new Promise((resolve, _) => {
    setTimeout(() => {
      count = 2;
      resolve(count)
    }, 200);
  })
}

关于javascript - 如何控制台记录 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66453500/

相关文章:

javascript - 当用户做出选择时,纽约时报风格的弹出窗口

javascript - 使用 Jest 测试时,componentWillUpdate 上的 nextState 不正确(还使用 react 路由器包装器)

javascript - 如何同步确定 JavaScript Promise 的状态?

javascript - 如何等到整批请求发出并且 promise 得到解决后,才在回调函数上发送数据?

javascript - 如何使用 Promise all() 同时执行两个函数?

javascript - 了解 promise.race() 用法

javascript - 谷歌地图 API v3 : How to remove all markers?

javascript - 使用ajax刷新网络摄像头图像

javascript - 自定义日期范围排序

javascript - 将 Axios Promise 转换为常规 JSON 数组