JavaScript

then方法是Promise原型对象中的方法,可以通过Promise实例对象调用。参数:then方法一共有两个参数,这两个参数都是函数,其实就是resolve()和reject()的回调函数。当Promise状态为fulfilled时,执行第一个函数(resolve)。当Promise状态为rejected时,执行第二个函数。(reject)返回值:then的返回值是一个Promise对象。获取数据:首先要从resolve()或者reject()中写好实参,然后该对象的then方法中对应的回调函数会接收形参。constp=newPromise(function(resolve,reject){resolve(data);//例如这里是文件中的数据reject(err);//这里就是读取文件失败的错误信息});p.then(function(value){console.log(value);//这里就是传过来的data数据},function(err){console.log(err);//这里就是传过来的err错误信息});注意:如果Promise对象的状态是pending(也就是没有调用resolve和reject),那么它实例的then方法是不会执行的。返回实例的状态改变:then方法返回的是一个Promise对象,它默认是一个pending状态,也就是说不会执行。可以通过return关键字可以将状态改为fulfilled。constp=newPromise(function(resolve,reject){resolve("成功调用");//改变该对象的状态,否则不会执行then方法//reject("失败调用");});constt=p.then(function(data){console.log(data);//输出resolve的实参//t现在的状态是pending状态,那么t的then方法是不会执行的returndata;//通过return改变t的状态,而这里return的值会被t实例中的then接收。},function(err){console.log(err);returnerr;//当p实例失败时,调用reject,才会执行这里,否则不会执行这里。});t.then(function(data){console.log("成功",data);},function(err){console.log("失败",err);});如果代码出错时,会将then方法返回的实例的状态修改为rejected。链式调用:当前then函数return的结果,可以被下一个then中的第一个function参数接收到。如果return的是一个变量,接收到的就是变量值。如果return的是一个Promise对象,那么后面then中的回调函数就是return传递过来Promise对象中的resolve函数。

2021-8-17 76 1