17行代码了解异步Promise、await、async、setTimeout

46 阅读1分钟

用17行代码来了解异步脚本逻辑。

async function one() {
    let time = ()=>{
        return new Promise((resolve, reject) => {
            setTimeout(()=>{
                console.log(1);
                resolve(2);
            }, 1000);
        });
    };
    await time();
    console.log(2);
}
let two = ()=>{
    console.log(3);
}
await one();
two();

在控制台运行结果:

1
2
3

你想的运行结果是否上述一致呢?

详解JavaScript Promise

Promise是异步编程的一种解决方案,是一个对象,可以获取异步操作的消息,大大改善了异步编程的困难,避免了回调地狱,比传统的解决方案回调函数和事件更合理和更强大。

从语法上讲,Promise是一个对象,它可以获取异步操作的消息。提供了一个统一的API,各种异步操作都可以用同样的方法进行处理

1、Promise的实例有三个状态:

(1)Pending(进行中)

(2)Resolved(已完成)

(3)Rejected (已拒绝)

2、Promise的实例有两个过程

(1)pending > fulfiled :Resolved

(2)pending > rejected :Rejected

注意:一旦从进销项状态变为其他状态就永远不能更改状态了