关于 promise 的理解(一 )

什么是Promise
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

1、promise 是解决 异步编程 的 一个方案:即 当你处理一个需要等待 才会得到 数据的 方法。
promi 有两个回调函数:resolve 和 reject
promi 有三个状态:pending – resolved – rejected
最初创建promise对象时,默认状态是pending,如果在函数体内部调用了第一个参数对应的函数,则状态变成了resolved;如果调用了第二个参数对应的函数,则状态变成了rejected。

// promis 内 包含的就是一个 异步的 代码块 ,我们可以获取 等待异步后的操作
new Promise(reselo=>{
  setTimeout(()=>{
    reselo('异步操作成功后,回调-抛出数据')
  },2000)
  console.log('我会正常的单线程执行---')

}).then((res)=>{
  // 在获取数据后 才输出值
  alert(res)

})

关于一个事件循环和 事件队列的操作:

console.log(1);

new Promise(resolve => {
    resolve();
    console.log(2);
})
.then(() => {
    console.log(3);
});

setTimeout(() => {
    console.log(4);
}, 0);

console.log(5);

分析:
1、js 是单线程 从上到下执行
2、当 遇到 异步(宏任务 , 和 promis (微任务 的时候会等待
3、微任务 在前,宏任务在后
4、微任务里面是会执行的
5、答案: 1, 2,5,3 ,4

参考:https://blog.csdn.net/maybe__row/article/details/124534729(状态值
参考:https://zhuanlan.zhihu.com/p/480120265 (面试题

**

关于: 关键字 async/await

**
async/await与Promise一样,是非阻塞的。
async/await使得异步代码看起来像同步代码,这正是它的魔力所在。

什么是异步什么是同步:
首先确定: js 是单线程操作

异步:单线程从上到下执行的时候,异步操作,就是先不执行,到一定契机才执行(比如定时器
同步: 就是会阻塞的,从上到下,执行完才操作

譬如通俗解释 :排队买饭,异步操作就是 a 排队的时候想上厕所,那么后面的同学 会 先 买,
同步操作就是 a 去完厕所后 人家都等着他回来,他买完人家才买。

function generatePromise() {
    return new Promise(function(resolve,reject){
        resolve('Hello World');
    });
}
 
 
async function execute() {
    let promise = generatePromise();
    console.log('1');
    const a = async() => promise.then(x => console.log(x));
    a();
    // await a(); 关键字 :await 同步执行的
    console.log('3');
}
 
execute();

1、如上代码顺序。
1、先js 单线程–顺序执行
2、微任务
3、宏任务

await 就是让 异步变同步:

1、加 await :1 - Hello World - 3
2、不加 await :1 - 3 - Hello World

你可能感兴趣的:(javascript,前端,开发语言)