Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 1.48 KB

Promise.md

File metadata and controls

47 lines (34 loc) · 1.48 KB

说起 promise ,那么就一定要聊一下前端的异步请求了,在 promise 之前呢,前端的异步请求有回调,事件分发,事件监听等方式。简单介绍一下其他的三种;

1 回调

假设我们有四个函数,分别是 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

Promise 的出现,目的是为异步编程提供统一的接口,简单来说,就是一个容器,保存着未来会结束的事件,通常是一个异步操作。