最赞回答 / 慕瓜6203314
then确实会返回一个promise,但是如果不手动return Promise,那么默认返回的promise状态就是resolved,值看你return的是啥了,不写return的话,值是undefined,return非promise,那么值就是这个非promise。而手动return Promise,那返回的promise状态就不一定是resolved了,因此就可以改变下一个then/catch调用的结果了。
2018-08-11
已采纳回答 / 857647010
异常第一次被捕获,就不会再被捕获了,类似Java机制new Promise((resolve, reject) => {setTimeout(() => { reject('bye') }, 2000)}).then(value => { console.log(value); },error => {console.log("error:" + error)}).catch(error => { console.log("catch:" + error); })
2018-07-15
如果在一个promise的then中直接返回一个promise对象,则下一个then是属于这个返回的promise对象的,如果不直接返回一个promise对象,则下一个then还是属于上一个promise对象的。不知道这样理解对不对。
2018-07-15
最赞回答 / 慕粉1709195557
promise是用来解决异步函数的顺序问题. 比如,有两个回调函数,你怎么让他们能够按照你所书写的顺序进行执行.要知道,虽然是先后书写的函数,但是返回所需要的时间是不一致的.所以会产生混乱.
2018-07-15
最新回答 / 慕沐750848
第一种:throw用来抛出问题,抛出问题后,接下来会执行.then里的内容。即返回了一个promise实例,但是,在执行这个实例的过程中,会不会有错误呢?那就要用到catch来捕捉,但是因为是异步的,系统认为我返回了一个结果(有还是没有错误,错误在哪),所有的事都做完了。 第二种:那么如何来让系统真正的执行所有的事呢,那要在实例中再抛出一个问题,这时系统会跳过then,直接执行catch。
2018-07-13