要解决"不等待setTimeout promise的值访问"的问题,可以使用async/await来等待promise的执行结果。
下面是一个代码示例:
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function example() {
console.log("开始");
await delay(2000); // 等待2秒
console.log("等待结束");
}
example();
console.log("不等待");
在上面的示例中,delay
函数返回一个Promise对象,它会在指定的时间后resolve。在example
函数中,我们使用await
关键字来等待delay
函数的执行结果。这样,在执行到await delay(2000)
时,代码会暂停执行直到promise被resolve,然后才会继续执行后面的代码。
输出结果会按照顺序显示如下:
开始
不等待
等待结束
可以看到,在调用example()
函数时,会先输出"开始",然后立即输出"不等待",因为await delay(2000)
会将执行权交给了后面的代码,所以不会等待2秒后才输出"等待结束"。
使用async/await可以方便地处理异步操作,并保证代码的执行顺序。