gpt4 book ai didi

javascript - 如何在环回中从 AngularJS 回调函数中获取数据?

转载 作者:行者123 更新时间:2023-11-29 23:46:24 25 4
gpt4 key购买 nike

我想知道如何从 Angular 函数中检索“好”数组。我 Angular 这个功能:

app.run(function($rootScope,Communications,$http,$filter) {

$rootScope.getCommunication =
function(object_type,val,id,isType,isSendSms,getNotes){

var array = {};
var newArr = [];

// getting data from mysql data
var myVals = Communications.find({
filter: {
where: {
and : [{
communications_type_code : val
},{
object_id : id
},{
object_type : object_type
}]
}
}
}).$promise
.then(function(data) {

for(var ind=0; ind<data.length; ind++){
array['address_type'] = data[ind].address_type;
array['contact_value'] = data[ind].contact_value;
array['send_sms'] = data[ind].send_sms;
}

newArr.push(array);
return newArr;
});
return newArr;
};
});

当我像这样调用 Angular Controller 中的函数时:

var arr = $rootScope.getCommunication(2,3,$id);
console.log(arr);

我进入控制台是这样的:

enter image description here

当我调用 arr[0] 时,我得到了 undefined。我怎样才能收到这些数据?

最佳答案

您需要返回 promise ,目前您返回的是数组更新之前的数组。异步的工作原理是先运行所有同步代码,然后再运行任何异步代码。

var arr = []; // runs first
promise.then(function(result){arr = result}) // runs third.
return arr; // runs second

您需要更改代码以返回 promise 。然而,这也意味着您的调用代码必须处理异步代码。

function asyncFunc() {
return promise.then(function(result){return result});
}

asyncFunc().then(function(result) {console.log(result)}) // output is the value of result.

在您上面给出的代码的上下文中

app.run(function($rootScope,Communications,$http,$filter) {

$rootScope.getCommunication =
function(object_type,val,id,isType,isSendSms,getNotes){
// getting data from mysql data
return Communications.find({
filter: {
where: {
and : [{
communications_type_code : val
},{
object_id : id
},{
object_type : object_type
}]
}
}
}).$promise
.then(function(data) {
var array = {};
var newArray = [];
for(var ind=0; ind<data.length; ind++){
array['address_type'] = data[ind].address_type;
array['contact_value'] = data[ind].contact_value;
array['send_sms'] = data[ind].send_sms;
}

newArr.push(array);
return newArr;
});
};
});

和调用函数:

var arr = $rootScope.getCommunication(2,3,$id)
.then(function(arr){console.log(arr)})

关于javascript - 如何在环回中从 AngularJS 回调函数中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com