资讯专栏INFORMATION COLUMN

ES6学习笔记(四)--------------------------------------pr

Jochen / 564人阅读

摘要:首先是一个构造器函数,使用它必须通过一个实例出来,并且出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己内置的两个参数,和,并且这两个参数也是两个函数异步操作成功上面这个就是一个最简单的对象属于的一个方法,里面的两个参数属于

首先promise是一个构造器函数,使用它必须通过new一个实例出来,并且new出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己内置的两个参数,resolve和reject,并且这两个参数也是两个函数

  var promise = new Promise(function(resolve, reject) {
  // ... some code
  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }.then(function(){},
function(){})

*上面这个就是一个最简单的promise对象

var a=new Promise(function(resolve,reject){
    console.log("A");
    resolve();
    console.log("B")
}).then(function(){
    console.log("C")
})
//A
//B
//C

var b=new Promise(function(resolve,reject){
    var success="success";
    var err="err";
    reject(err)
}).then(function(e){
    console.log(e)
},function(e){
    console.log(e)
})//err

then属于promise的一个方法,then里面的两个参数属于promise的状态达成后所调用的回调函数,当promise状态为成功时候,调用第一个函数,失败则调用第二个函数,同时我们可以看出,promise实例在创建后的那一刻,它的实参函数就开始执行,当resolve函数执行后,promise对象的状态由进行变为了执行成功,同样,reject函数的执行将promise状态由进行变为失败

另外resolve和reject也起到传递信息的作用,信息通过他们的参数来传递,then方法则可以来接收传递的信息

关于Promise的一些属性方法可以Promise.prototype获取,注意:Promise首字母一定要大写

当然then方法可以采用链式反应,即当then方法的参数(回调函数)执行后又返回一个promise实例,则后面的then会继续等待该实例最终的状态而采取回调

var b = new Promise(function (resolve, reject) {
    var a = function () {
        return new Promise(function (resolve, reject) {
            var c = 1;
            resolve(c)
        })
    };
    reject(a)
}).then(function (e) {
    console.log(e)
}, function (e) {
    var d = e();
    return d
}).then(function (e) {
    console.log(e)
}, function (e) {
    console.log(e)
})//1

Promise的catch方法是当上面的程序发生错误的时候指定所要执行的回调函数,该回调函数有一个参数err,用来储存捕获到的错误

    var a=function(){
        return new Promise(function(resolve,reject){
            resolve(x+3)//x没有声明
        }).catch(function(err){
            console.log(err)
        }).then(function(){console.log("success")},
            function(){
                console.log("err")
            })
    };
    a()//输出 x is not defined
    
    var a=function(){
        return new Promise(function(resolve,reject){
            resolve(x+3)
        }).then(function(){console.log("success")},
            function(){
                console.log("err")
            })
    };
    a()//输出err
  
  var a=function(){
        return new Promise(function(resolve,reject){
            reject(x+3)
        }).then(function(){console.log("success")},
            function(){
                console.log("err")
            })
    };
    a()//输出err  

第一个例子里面当reslove被调用的时候发生错误,catch捕捉错误并执行回调函数,catch后面的then方法则成为对于catch做出的结果进行回调,由于捕获错误成功,则调用then的第一个回调函数
从2号例子中我们对比可以看出在promise状态又进行到成功需要resolve函数执行成功才能判定promise状态成功,resolve函数没有执行成功,则promise状态立刻变为reject失败,并调用then后第二个函数
从3号例子可以看出,promise中的状态执行失败都会调用reject

var a=function(){
        return new Promise(function(resolve,reject){
            console.log(1)
        }).then(function(){console.log("success")},
            function(){
                console.log("err")
            })
    };
    a()  //1

我们从上面例子可以看出没有给promise指定状态时候,then方法是不会被激活

var a=function(){
        return new Promise(function(resolve,reject){
            resolve();reject();
        }).then(function(){console.log("success")},
            function(){
                console.log("err")
            })
    };
    a()//success

上面例子我们可以看出一旦有一个状态被指定就不能在改变。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/112596.html

相关文章

  • ES6学习笔记)--------------------------------------pr

    摘要:首先是一个构造器函数,使用它必须通过一个实例出来,并且出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己内置的两个参数,和,并且这两个参数也是两个函数异步操作成功上面这个就是一个最简单的对象属于的一个方法,里面的两个参数属于 首先promise是一个构造器函数,使用它必须通过new一个实例出来,并且new出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己...

    zhaofeihao 评论0 收藏0
  • CSS技巧

    摘要:技巧使你的更加专业这是上关于技巧的一篇译文,另外你也可以在本项目看到原文。列举了一些很实用的技巧,比如给空内容的标签添加内容,逗号分隔列表等等。排序算法看源码,把它背下来吧排序算法的封装。主要帮助初学者更好的掌握排序算法的实现。 成为专业程序员路上用到的各种优秀资料、神器及框架 成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。 Java...

    DangoSky 评论0 收藏0
  • CSS技巧

    摘要:技巧使你的更加专业这是上关于技巧的一篇译文,另外你也可以在本项目看到原文。列举了一些很实用的技巧,比如给空内容的标签添加内容,逗号分隔列表等等。排序算法看源码,把它背下来吧排序算法的封装。主要帮助初学者更好的掌握排序算法的实现。 成为专业程序员路上用到的各种优秀资料、神器及框架 成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。 Java...

    zgbgx 评论0 收藏0
  • react入门学习笔记(一)

    摘要:选择的主要原因大概是因为该框架出现较早,感觉上会相对成熟,日后学习中遇到问题想要查找答案相对简单一些,对,就是这么简单。多说无益,接下来开始的学习,我按照我学习中带着的问题来一一解答,完成我的入门笔记。主要是针对前端的组件化开发。 这两天得空,特意来折腾了以下时下火热的前端框架react,至于为什么选react,作为一个初学者react和vue在技术上的优劣我无权评论,也就不妄加评论了...

    leon 评论0 收藏0

发表评论

0条评论

Jochen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<