Promise
Promise 是一个对象,表示异步操作的完成或者失败及其输出值。
Promise 可以处于三种状态:pending,表示初始状态,在操作成功完成时完成,以及拒绝,表示操作失败。
异步/等待
await 操作符使异步函数的执行暂停,直到 Promise 被解决,并在 Promise 完成后恢复执行。
await 的值是已完成的 Promise 的值。
在拒绝 Promise 的情况下, await 会抛出被拒绝的值。
如果 await 后面的表达式的值不是一个 Promise,它就会变成一个已解决的 Promise。
编程语言有让程序停止几秒或者几毫秒的方法。
例如,如果我们使用 PHP 语言,我们应该调用 sleep() 函数使程序暂停执行 3 秒。
尽管 JavaScript 没有sleep函数,但由于 ES2015 中引入了 Promise 和 async/await,我们最终可能会导致该函数进入睡眠状态。
JavaScript 不会像其他语言那样暂停整个程序的执行。
它只会使函数休眠。
const sleep = (ms) => {
return new Promise(resolve => setTimeout(resolve, ms))
}
接下来,我们可以使用 then 回调:
sleep(1000).then(() => {
//some things
})
或者在异步函数中使用它:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<script>
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const doSomething = async() => {
console.log('Wait for 2 seconds!');
await sleep(2000)
console.log('After 2 seconds!');
}
doSomething();
</script>
</body>
</html>
await 操作符只能在 async 函数中使用,并且只能暂停当前的 async 函数。
日期:2020-06-02 22:16:27 来源:oir作者:oir
