摘要:首先是一个构造器函数,使用它必须通过一个实例出来,并且出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己内置的两个参数,和,并且这两个参数也是两个函数异步操作成功上面这个就是一个最简单的对象属于的一个方法,里面的两个参数属于
首先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/88498.html
摘要:首先是一个构造器函数,使用它必须通过一个实例出来,并且出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己内置的两个参数,和,并且这两个参数也是两个函数异步操作成功上面这个就是一个最简单的对象属于的一个方法,里面的两个参数属于 首先promise是一个构造器函数,使用它必须通过new一个实例出来,并且new出来的实例晕有一个内置的参数,这个参数是一个函数,这个参数拥有自己...
摘要:选择的主要原因大概是因为该框架出现较早,感觉上会相对成熟,日后学习中遇到问题想要查找答案相对简单一些,对,就是这么简单。多说无益,接下来开始的学习,我按照我学习中带着的问题来一一解答,完成我的入门笔记。主要是针对前端的组件化开发。 这两天得空,特意来折腾了以下时下火热的前端框架react,至于为什么选react,作为一个初学者react和vue在技术上的优劣我无权评论,也就不妄加评论了...
阅读 2247·2023-04-25 14:50
阅读 1170·2021-10-13 09:50
阅读 1853·2019-08-30 15:56
阅读 1819·2019-08-29 15:29
阅读 2873·2019-08-29 15:27
阅读 3527·2019-08-29 15:14
阅读 1136·2019-08-29 13:01
阅读 3288·2019-08-26 14:06