什么网站可以接效果图做,网站界面设计要求,php培训机构企业做网站,wordpress monster文章目录 一、什么是promise #xff1f;二、await / async ES7的新规范#xff0c;异步处理同步化 一、什么是promise #xff1f; promise是解决异步的方法#xff0c;本质上是一个构造函数#xff0c;可以用它实例化一个对象。对象身上有resolve、reject、all#xff… 文章目录 一、什么是promise 二、await / async ES7的新规范异步处理同步化 一、什么是promise promise是解决异步的方法本质上是一个构造函数可以用它实例化一个对象。对象身上有resolve、reject、all原型上有then、catch方法。promise对象有三种状态pending初识状态/进行中、resolved或fulfilled成功、rejected失败 pending。它的意思是 “待定的将发生的”相当于是一个初始状态。创建Promise对象时且没有调用resolve或者是reject方法相当于是初始状态。这个初始状态会随着你调用resolve或者是reject函数而切换到另一种状态。 resolved。表示解决了就是说这个承诺实现了。 要实现从pending到resolved的转变需要在 创建Promise对象时在函数体中调用了resolve方法 rejected。拒绝失败。表示这个承诺没有做到失败了。要实现从pending到rejected的转换只需要在创建Promise对象时调用reject函数。 看上面的引用promise就是用来解决异步的方法光看上面的解释可能不懂什么意思但是它后面说的实例化对象后端方法你肯定用过如then、catch等通过以下代码打印一下他里面的方法。
console.dir(Promise)浏览器打印结果 下面就通过promise实例化完成对上面回调地狱函数进行重构
//promise链式调用
this.getNav().then(res{let idres.data[0].id;return this.getArticle(id);
}).then(res{let idres.data[0].id;return this.getComment(id)
}).then(res{console.log(res)
})二、await / async ES7的新规范异步处理同步化
这两个命令是成对出现的如果使用await没有在函数中使用async命令那就会报错如果直接使用async没有使用await不会报错只是返回的函数是个promise可以但是没有意义所以这两个一起使用才会发挥出它们本身重要的作用。
async onLoad() {let id,res;resawait this.getNav();idres.data[0].id;resawait this.getArticle(id);idres.data[0].id;resawait this.getComment(id);console.log(res)
} 可以看到onload是函数这个函数必须有async命令在调用函数的部分前面都加了一个await这个命令的意思就是等这一行的异步方法执行成功后将返回的值赋值给res变量然后才能再走下一行代码这就是将原来的异步编程改为了同步编程这就是标题提到的“异步处理同步化” 参考 咸虾米_https://www.bilibili.com/read/cv18799030