
angular中的promise对象的then()方法返回一个新的promise对象,用于进行链式调用。但是无论是调用defer.resolve()还是defer.reject(),那么var a=promise.then()方法执行了之后,返回的这个对象a,它的status始终都是1,也就是如果再使用这个a.then(fn1,fn2),它就始终都是执行fn1。
是不是promise.then()调用之后,不管是resolve还是reject,then()返回的新的promise对象的status的值始终都是1 ?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我觉得 在success或error没有再对defer.resolve()或者defer.reject(),应该都会只执行then的第一个参数函数
问这个问题表示你没怎么明白
Promise到底是如何工作的,以及怎么才是正确的使用方法。先解决你
a.then(fn1,fn2),它就始终都是执行fn1的问题,这个现象的关键在于,你之前已经给了promise两个回调,如下:注意里面的第二个回调
function(error) {},里面什么都没做,表达了这样一个意思:“当错误发生时,忽略其错,并进入后面的链”。这就是为什么你下面的链中,永远都是alert(1)被调用了。要改也简单,把alert前移,然后去掉后一次的then,如下:还有,
defer不是鼓励用法,建议不要在这条路上继续走下去