ES6之Promise

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ES6之Promise脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.什么是promise?使用PRomise有什么优势?

promise是异步编程的一种解决方案,优势是可以避免层层嵌套的回调。

2.产生背景:
在Promise出现之前,你肯定写过这样的代码:

$.ajax({
    url1: '......',
    success: function (data1) {
        $.ajax({
            url2: '......',
            success: function (data2) {
               ... //data2的某些操作依赖于data1
            }
        });
    }
});

上述代码中,如果还有data3依赖于data2,那么上述代码将会存在更深层次的嵌套,promise的出现就是解决这些嵌套带来的不优雅和低可读性等问题。

3.promise使用介绍

promise是一个对象,从这个对象中我们可以获取@R_777_1647@的结果。
promise代表一个异步操作,有三种状态:
PEnding(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败)。

创建一个promise:

VAR promise = new Promise(function(resolve,reject){
    ...some code, such as http request
    if(success){
        resolve(data);   //异步请求成功时,通过resolve向外传递结果
    } else {
        reject(error);   //异步请求失败时,通过reject向外传递结果
    }
});

简单使用案例:

var MongoClient = require('mongodb').MongoClient;

var getData = function(url){
    var promise = new Promise(function(resolve,reject){
    MongoClient.connect(url, function(err, db){
        if(db){
             var collection = db.collection('users');
             collection.find({}).toArray(function(err,docs){
                resolve(docs);
             });
        }
        if(err){
            reject(err);
        }
    });
    });
    return promise;
}

getData('mongodb://localhost:27017/zuckjet').then(function(data){
    console.LOG(data);
},function(err){
    console.log(err);
});

上述代码中,首先创建了一个函数getData,该函数返回一个promise实例。在该promise实例中,执行的异步操作代码是访问本地mongodb数据库数据。当请求数据成功时,通过resolve对外传递请求结果。当请求失败时,通过reject对外传递错误信息。
promise.then()接受两个回调函数作为参数,第一个回调函数接收的是请求成功时的数据,即上述代码中resolve(docs)中的doc,第二个回调函数接收的是请求失败时的信息,即上述代码中reject(err)中的err。

脚本宝典总结

以上是脚本宝典为你收集整理的ES6之Promise全部内容,希望文章能够帮你解决ES6之Promise所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。