说起 promise ,那么就一定要聊一下前端的异步请求了,在 promise 之前呢,前端的异步请求有回调,事件分发,事件监听等方式。简单介绍一下其他的三种;
假设我们有四个函数,分别是 f1 f2 f3 f4 需要是 f1 => f2 => f3 => f4 这样的一个顺序进行,那么在回调就是这样去做的
f1() {
// xxxx 执行结果
f2() {
// xxx f2 执行结果
f3(){
// xxx f3 执行结果
f4(){
// xxx f4 的执行结果。
}
}
}
}
这样的好处是简单易懂,很清楚的知道他们的执行顺序和逻辑,但是麻烦的地方在于,我们会处理很多高耦合的代码,流程会很复杂,一旦要处理其中的一个,那么就会很麻烦。
在 dom 中有 addEventListener 这样的事件,可以用来监听操作,监听完以后可以去执行一些操作,比如触发一个新的函数。
div.addEventListener("click",f1)
发布订阅是一种设计模式,通过发布事件,然后让监听事件的函数触发。
function f1(){
// xxx 进行了一些操作,结束后执行事件的发布
eventPublic.publish("done")
}
eventPublic.unsubscribe("done", f2);
Promise 的出现,目的是为异步编程提供统一的接口,简单来说,就是一个容器,保存着未来会结束的事件,通常是一个异步操作。