猿问

怎么写promise的链式调用

比如我有一个A.func1()是异步的,它能返回一个对象x1,我还有一个B.func2()也是异步的,需要根据x1来执行,然后B.func2返回一个最终值值t,根据这个最终值t就进行一些提示性显示。请问这个要怎么写呢?
我自己写的代码是这样的
A.func1().
then(function(x1){
B.func2(x1).
then(function(t){
//dosomething
})
})
但是感觉这样用不用then就一个效果啦……还是变回金字塔了
慕姐4208626
浏览 583回答 2
2回答

大话西游666

直接在then里面返回一个Promise的对象,如下:javascriptA.func1().then(function(x1){returnB.func2(x1);}).then(function(t){//dosomething});针对你评论中说的问题,如果不使用第三方的Promise库的话,可以像下面这样使用:javascriptvarpromise=newPromise(function(resolve,reject){varfirstValue;A.func1().then(function(x1){firstValue=x1;//临时保存returnB.func2(x1);},reject).then(function(x2){resolve({firstValue:firstValue,secondValue:x2});},reject);});promise.then(function(result){console.log(result);//{"firstValue":"Hello","secondValue":"World"}});使用第三方的Promise库可以简化这个过程。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答