ES6(1)—promise学习

学过android的人都知道,java是基于多线程的,当需要执行一个耗时的操作,比如请求服务端的数据,此时往往需要开一个线程来执行。
但是在我们的js中,是单线程的,请求网路数据的话,我们无法判定什么时候会返回,如果网络情况不是很好的话那么就会很慢。所以不可能去等待他请求完成才去进行下一步操作。所以我们需要异步去请求数据,但是我们又需要知道请求的结果,此时我们就需要一个接口回调来告知我们这个请求的结果。

在ES6中,提供了promise来进行异步操作,并实现了回调。
用法如下:

var promise = new Promise(function (resolve, reject) {
            // 进行一些异步或耗时操作
            if (1) {
                //条件满足,异步操作成功
                resolve("success!");
            } else {
                //条件不满足
                reject(Error("fail"));
            }
        });
        //绑定处理程序
        promise.then(function (result) {
            //promise成功回调
            console.log(result); // "success"
        }, function (err) {
            //promise失败回调
            console.log(err); // Error: "fail"
        });

实现起来有三步:
1. 第一步:创建一个promise对象,并在里边去做一些事情,比如Ajax请求数据
2. 第二步:在这个对象方法中,指定条件相应。比如ajax请求返回的数据state==200的时候,使用 resolve(“success!”);回调,如果不是,则使用 reject(Error(“fail”));
3. 第三步:使用 promise.then监听这两个回调函数,在成功或者失败的时候做出我们期望的相应操作。

猜你喜欢

转载自blog.csdn.net/nongweiyilady/article/details/79955409