0

我正在尝试将 Promise 函数重写为异步函数

当我的承诺奏效时

function boxColor (time) {
return new Promise ((res, rej) => {
    setTimeout(() => {
        res(box.style.backgroundColor = randomColor())
    }, time)

})}

我不能让它与异步一起工作

async function newBoxColor(time) {
try {
    setTimeout(() =>{
        return box.style.backgroundColor = randomColor()
    }, time)
} catch (error) {
    throw error
} }

我的错误是什么?

4

1 回答 1

1

async关键字有两个作用:

  1. 它使函数返回一个promise,该promise 解析为从函数返回的值(您的函数没有return语句,因此是undefined;传递给的箭头函数的返回值setTimeout在不同的函数中)。
  2. 它允许您await在该函数中使用关键字使其在等待另一个承诺解决时进入睡眠状态

它是管理现有承诺的工具。将期望回调的函数转换为返回承诺的函数没有帮助。

您需要继续使用new Promise才能获得setTimeout完成后解决的 Promise。

于 2020-12-13T11:40:04.833 回答