我爱编程

promise

2018-04-16  本文已影响0人  大脸猫_2e21

Js语言的执行环境是“单线程”就是指一次只能完成一个任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
单线程的好处是实现起来比较简单,执行环境相对单纯,坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。
js分同步模式和异步模式,异步模式,么个任务有一个或多个回调函数,前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序和任务的排列顺序使不一致的、异步的。

处理异步有几种常见的方式

function f1(callback){
setTimeout(function(){
//f1的任务代码
callback()

},1000)
}
//执行代码就变成:f1(f2)
f1.on('done',f2)
//当f1发生done事件,就执行f2,然后对f1进行改写
functjion f1(){
setTimeout(function(){
//f1的任务代码
f1.trigger('done')
},1000)
}
//这种方法的优点是,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”,有利于实现模块化。缺点是整个程序都编程事件驱动型,运行流程会变得很不清晰。
//首先f2向信号中心jQuery
订阅done信号
jQuery.subscribe("done",f2)
//然后进行如下改写
function f1(){
setTimeout(function(){
//f1的任务代码
jQuery.publish("done")
},1000)
}
//jQuery.publish('done')的意思是,f1执行完成后,向信号中心jQuery发布done信号,从而引发f2的执行。
此外,f2完成执行后,也可以取消发布订阅
jQuery.unsubscribe("done",f2)
//这种方法的性质与“事件监听”类似,但是明显优于后者。因为可以通过查看消息中心,了解存在多少信号,每个信号有多少订阅者,从而监控程序的执行

promise 是什么

Promise 对象是 JavaScript 的异步操作解决方案,为异步操作提供统一接口。它起到代理作用(proxy),充当异步操作与回调函数之间的中介,使得异步操作具备同步操作的接口。Promise 可以让异步操作写起来,就像在写同步操作的流程,而不必一层层地嵌套回调函数。
Promise 并不能消灭回调地狱,但是它可以使回调变得可控
上一篇 下一篇

猜你喜欢

热点阅读