- jQuery.unsubscribe("done", f2);
可以看到应用 async\await 就像写同步代码一样
这种办法的性质与”事宜监听”类似,然则明显优于后者。因为我们可以经由过程查看”消息中间”,懂得存在若干旌旗灯号、每个旌旗灯号有若干订阅┞愤,大年夜而监控法度榜样的运行。
Promise 是异步编程的一种解决筹划,比传统的解决筹划——回调函数和事宜——更合理和更强大年夜
所谓 Promise ,简单说就是一个容器,琅绫擎保存着某个将来才会停止的事宜(平日是一个异步操作)的结不雅。大年夜语法上说, Promise 是一个对象,大年夜它可以获取异步操作的消息。 Promise 供给同一的 API ,各类异步操作都可以用同样的办法进行处理
简单说,它的思惟是,每一个异步义务返回一个 Promise 对象,该对象有一个 then 办法,许可指定回调函数。
如今我们应用 Promise 从新实现膳绫擎的案例,起首,我们要把异步请求数据的办法封装成 Promise
- function getDataAsync(url){
- return new Promise((resolve, reject) => {
- setTimeout(()=> {
- var res = {
- url: url,
- data: Math.random()
- }
- resolve(res)
- }, 1000)
- })
- }
那么请求的代码应当如许写
- getDataAsync('/page/1?param=123')
- .then(res1=> {
- console.log(res1)
- return getDataAsync(`/page/2?param=${res1.data}`)
- })
- .then(res2=> {
- console.log(res2)
- return getDataAsync(`/page/3?param=${res2.data}`)
- })
- .then(res3=> {
- console.log(res3)
- })
但也并不是完美,比如我们要添加很多 then 语句, 每一个 then 照样要写一个回调。
如不雅场景再复杂一点,比如河畔的每一个请求依附前面所有请求的结不雅,而不仅仅依附上一次请求的结不雅,那会更复杂。 为了做的更好, async/await 就应运而生了,来看看应用 async/await 要若何实现
四、async/await
getDataAsync 办法不变,如下
- function getDataAsync(url){
- return new Promise((resolve, reject) => {
- setTimeout(()=> {
- var res = {
- url: url,
- data: Math.random()
- }
推荐阅读
Victor告诉记者,在设备全部治理周期中,安然是最特别的一环,它不仅仅是贯穿全部周期,更重要的是,它必须在>>>详细阅读
本文标题:浅谈JavaScript中的异步处理
地址:http://www.17bianji.com/lsqh/36972.html
1/2 1