Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将多个承诺传递给$q.all不起作用。

将多个承诺传递给$q.all不起作用。
EN

Stack Overflow用户
提问于 2015-05-01 07:56:06
回答 2查看 2.2K关注 0票数 1

我试图循环一个对象,然后从两个服务API函数中提取每个迭代的数据,然后返回数据并用返回的结果填充当前的迭代对象。现在,由于这些服务函数使用的是$http对象,所以将返回承诺,因此我需要等待响应才能填充对象。

这是我第一次使用$q AngularJS库,我不确定我是否能够以使用它的方式使用它。它没有正确地返回,所以我假设我没有,我似乎不能让我的代码工作。

这是我的代码:

控制器功能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$scope.returnTasksAndPayments = function() {
var defer = $q.defer();
var promisesTasks = [];
    var promisesPayments = [];
    for(var i in $scope.projects) {
        promisesTasks[i] = ProjectService.fetchTaskData($scope.projects[i].project_id);
                    promisesPayments[i] = ProjectService.fetchPaymentsData($scope.projects[i].project_id);
                }

                $q.all(promisesTasks, promisesPayments).then(function(promiseArray) {
                        console.log(promiseArray);
                });
            };

我的服务职能是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.fetchProjectsData = function(options) {
                return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdata.json", {
                    order     : options.order,
                    page      : options.page,
                    page_size : options.page_size,
                    status    : options.status,
                    search    : options.search,
                    assigned  : options.assigned
                });
            };

            this.fetchTaskData = function(options) {
                return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdataTasks.json", {

                });
            };

            this.fetchPaymentsData = function(options) {
                return api().get("http://dashboards.blurgroup.dev/src/projectPayments/services/JSONdataPayments.json", {

                });
            };

正如您所看到的,我正在尝试遍历我的$scope.projects对象,为每次迭代调用这两个函数,并将它们放入单独的允诺对象中,然后使用$q.all来检查这两个承诺对象是否已经实现。

这似乎不像应该的那样工作,而且似乎存储在$q.all函数中的‘$q.all’数组中的数据没有添加到$q.all回调数组中的promiseArray变量中。

有人能指出我哪里出了问题吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-01 08:22:59

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var promisesTasksAll = $q.all(promisesTasks);
var promisesPaymentsAll = $q.all(promisesPayments);

$q.all([promisesTasksAll, promisesPaymentsAll]).then(function(data){
    //data[0] will contain promisesTasks data
    //data[1] will contain promisesPayments data    
});
票数 5
EN

Stack Overflow用户

发布于 2015-05-01 08:10:20

尝试将两个数组合并到一个大数组中,并将其传递给串接 ()。

或者如果你需要分离回来的数据,嵌套你的解决方案,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$q.all(promisesTasks).then(function(promiseTaskData) {
    console.log(promiseTaskData);
    $q.all(promisesPayments).then(function(promisePaymentsArray) {
        console.log(promisePaymentsArray);
    });
});

$q.all(promisesTasks, promisesPayments)是一个嵌套数组[[],[]],$q.all()不喜欢它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29990378

复制
相关文章
将多个属性传递给 Vue 组件的几种方式
所有使用基于组件的体系结构(如Vue和React)的开发人员都知道,创建可重用组件是很困难的,而且大多数情况下,最终会通过传入大量的属性,以便从外部更容易地控制和自定义组件。这并不坏,但是传递大量属性确实会变得有点麻烦和丑陋。
前端小智@大迁世界
2020/05/11
1.9K0
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.7K0
iframe怎么将参数传递给vue 父组件
在子页面的iframe中想将参数传递给Vue父组件,可以使用postMessage()方法将数据发送给父窗口。父组件可以通过监听message事件来接收并处理这些数据。
王小婷
2023/08/10
1.4K0
jmeter创建JDBC请求,返回多个字段传递给登录接口
今天给大家分享的是,【使用jmeter创建JDBC请求,返回多个字段传递给登录接口】。
程序媛淼淼
2022/07/01
6630
jmeter创建JDBC请求,返回多个字段传递给登录接口
Vue 中,如何将函数作为 props 传递给组件
作者:Michael Thiessen 译者:前端小智 来源:medium 点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录,更多往
前端小智@大迁世界
2020/05/18
8.2K0
理解 $q 和 promise基本用法-2 4.17
可以先看我的第一篇文章 $q 和 promise 的基础理解 $q 和 promise 需要在 angular 中掌握异步的知识,我们需要掌握这几个重要的知识点, http, promise
西南_张家辉
2021/02/02
8720
【笔记】vue filters过滤器传多个参数
温馨提示:本文最后更新于2021-11-18,若文件或内容有错误或已失效,请在下方留言。
NorthS
2023/03/21
1.1K0
【笔记】vue filters过滤器传多个参数
如何在Linux中使用管道将命令的输出传递给其他命令?
在Linux中,管道使用竖线符号 | 表示,它位于两个命令之间。管道的基本语法如下:
网络技术联盟站
2023/09/06
1.5K0
如何在Linux中使用管道将命令的输出传递给其他命令?
如何在Linux中使用管道将命令的输出传递给其他命令?
在Linux系统中,管道(Pipeline)是一种强大的工具,它允许将一个命令的输出作为另一个命令的输入。通过管道,我们可以将多个命令串联在一起,实现数据的流动和处理。本文将详细介绍如何在Linux中使用管道将命令的输出传递给其他命令,并提供一些常见的使用示例。
网络技术联盟站
2023/06/14
1.4K0
如何在Linux中使用管道将命令的输出传递给其他命令?
ASP.NET MVC 5 - 将数据从控制器传递给视图
在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交
葡萄城控件
2018/01/10
5K0
ASP.NET MVC 5 - 将数据从控制器传递给视图
LoadRunner参数传递给参数
需求:使用随机函数时,需要参数化某个参数,并且后面的步骤需要使用这个参数。 方法: 1 lr_save_string 该函数主要是将程序中的常量或变量保存为lr中的参数 2 lr_eval_string 从参数中取得对应的值,并且转换为一个字符串 测试: 在action里写: 1 lr_output_message("*****参数:%s********",lr_save_string(lr_eval_string("{NewParam}"),"name")); 2 lr_output_messag
全栈测试开发日记
2023/02/18
2.9K0
传ipad5将更加轻薄小巧
随着apple发布会的临近,有关iPad 5的传言也日渐增加。近日,就有传媒爆出iPad 5的后壳照片。从图片来看,iPad 5将比iPad 4更加轻薄小巧。根据尺寸比例来看,新款iPad边框将会很窄。
reizhi
2022/09/26
2580
传ipad5将更加轻薄小巧
python接口测试:如何将A接口的返回值传递给B接口
一种方式是可以通过数据库来获取,但是通过这次接口测试,我发现读取数据库有一个缺点:速度慢
冰霜
2022/03/15
2K0
React篇(029)-如何将参数传递给事件处理程序或回调函数?
你可以使用箭头函数来包装事件处理器并传递参数: <button onClick={() => this.handleClick(id)} /> 这相当于调用 .bind: <button onClick={this.handleClick.bind(this, id)} />
齐丶先丶森
2022/05/12
3.8K0
微信小程序跳转页面传多个参数(拼接)
//事件处理函数,带着4个参数跳转,姓名时间被访部门 bindViewTapsuccess: function() { wx.navigateTo({
王小婷
2021/07/13
3.5K0
Mybatis传多个参数(三种解决方案)
其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。
似水的流年
2018/01/14
6990
利用委托实现winform多个窗体间的传值
父窗体创建了两个子窗体——子窗体1和子窗体2,子窗体1产生的数据要在子窗体2中显示出来。
角落工程师
2022/05/14
1.7K0
Mybatis传多个参数(三种解决方案)
第一种方案  DAO层的函数方法  Public User selectUser(String name,String area); 对应的Mapper.xml  <select id="selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{0} and user_area=#{1} </select> 其中,#{0}代表接收的是dao层中的第一个参数,#{1}代
似水的流年
2018/01/18
8860
Mybatis传多个参数(三种解决方案)
其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。
似水的流年
2019/12/04
1K0
Volatile 可见性承诺
Java Volatile 关键字是一种轻量级的数据一致性保障机制,之所以说是轻量级的是因为 volatile 不具备原子性,它对数据一致性的保障体现在对修改过的数据进行读取的场景下(也就是数据的可见性)。比起对读操作使用互斥锁, volatile 是一种很高效的方式。因为 volatile 不会涉及到线程的上下文切换,以及操作系统对线程执行的调度运算。同时 volidate 关键字的另一个功能是解决“指令重排序问题”。
不会飞的小鸟
2020/03/17
6930

相似问题

Node.js承诺Q.all不起作用

15

q.all不适用于多个承诺

30

无法让$q.all在多个承诺上工作

13

顺序Q.all承诺nodejs

32

与Q.all同步解析承诺(承诺)

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文