JavaScript中promise嵌套问题如何解决?
ringa_lee
ringa_lee 2017-04-10 16:20:15
[JavaScript讨论组]

比如:

var p1 = new Promise(function() {});
var p2 = new Promise(function() {});
var p3 = new Promise(function() {});
// var p4...

p1.then(function(p1_data) {
    p2.then(function(p2_data) {
        // do something with p1_data
        p3.then(fuction(p3_data) {
        // do something with p2_data
            // p4...
        });
    });
});

这样的情况怎样解决啊?

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
阿神

promise链式调用哦

var p1 = new Promise(function() {});
var p2 = new Promise(function() {});
var p3 = new Promise(function() {});
// var p4...

p1.then(function(p1_data) {
  return p2;
}).then(function(p2_data){
  return p3;
}).then(function(p3_data){
  return p4;
}).then(function(p4_data){
  //final result
}).catch(function(error){
    //同一处理错误信息
});
PHP中文网

如果用JQuery,可以用promise的when方法:

$.when(p1,p2,p3).done(function(p1_data, p2_data, p3_data){
    // handle...
});

参考:https://api.jquery.com/jquery.when/

ringa_lee

用when, http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

大家讲道理

这是要多个异步 做同步处理, 一楼不能把多个结果进行交互处理, 正确的写发可以参考 Promise.all(Array).Promise.all

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号