Javascript Angularjs应用程序中的angular.extend无法合并2个阵列

Javascript Angularjs应用程序中的angular.extend无法合并2个阵列,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,我想合并两个数组,但结果总是空的。我不知道是什么问题这是我的代码: $scope.messages=[]; $scope.messagesRecieved=[]; $scope.messagesSent=[]; Message.getMessengerMessages(localStorage.getItem("token"),localStorage.getItem("contact")).then(function(messages){ $scope.messagesRecieved=

我想合并两个数组,但结果总是空的。我不知道是什么问题这是我的代码:

$scope.messages=[];
$scope.messagesRecieved=[];
$scope.messagesSent=[];
Message.getMessengerMessages(localStorage.getItem("token"),localStorage.getItem("contact")).then(function(messages){


 $scope.messagesRecieved=messages;

})
console.log('le contact est '+localStorage.getItem("contact") +'Lutilisateur est  '+localStorage.getItem("token"))
Message.getMessengerMessages(localStorage.getItem("contact"),localStorage.getItem("token")).then(function(messages){


 $scope.messagesSent=messages;
 for (var i=0; i<messages.length; i++) {
  if(messages[i].read=='no'){
    Message.modifyRead(messages[i]._id);
  }
 }
})
angular.extend( $scope.messages, $scope.messagesRecieved, $scope.messagesSent);
$scope.messages=[];
$scope.messagesRecieved=[];
$scope.messagesSent=[];
Message.getMessenger消息(localStorage.getItem(“令牌”)、localStorage.getItem(“联系人”))。然后(函数(消息){
$scope.messagesRecieved=消息;
})
console.log('le contact est'+localStorage.getItem(“contact”)+'Lutilisateur est'+localStorage.getItem(“token”))
Message.getMessenger消息(localStorage.getItem(“联系人”)、localStorage.getItem(“令牌”))。然后(函数(消息){
$scope.messagesSent=消息;
for(var i=0;i用于合并对象,而不是数组。您可能希望在此处使用

用于合并对象,而不是数组。您可能希望在此处使用


我猜您只使用
$scope.messagesRecieved
$scope.messagesSent
作为中间产物,用于派生
$scope.messages
,而不是驱动视图

如果是这样,它们可能会消失,并且
messagesRecieved
/
messagesent
可以从
promise.all()
开始沿着承诺链传递,以聚合您的两个
Message.getMessengerMessages()
承诺

另外,要连接数组,请使用
newArray=array1.concat(array2)

//$scope.messagesRecieved=[];//除非有相应的视图元素,否则不需要
//$scope.messagesSent=[];//除非有相应的视图元素,否则不需要
$scope.messagesSent=[];//只有在两个异步获取正在进行时,如果要使视图元素为空,才需要执行此操作。
var receivedPromise=Message.getMessenger消息(localStorage.getItem('token')、localStorage.getItem('contact');
var sentPromise=Message.getMessenger消息(localStorage.getItem('contact')、localStorage.getItem('token'))。然后(函数(消息){

对于(var i=0;i我猜您只使用
$scope.messagesReceived
$scope.messagesSent
作为中间产物,用于派生
$scope.messages
,而不是驱动视图

如果是这样,它们可能会消失,并且
messagesRecieved
/
messagesent
可以从
promise.all()
开始沿着承诺链传递,以聚合您的两个
Message.getMessengerMessages()
承诺

另外,要连接数组,请使用
newArray=array1.concat(array2)

//$scope.messagesRecieved=[];//除非有相应的视图元素,否则不需要
//$scope.messagesSent=[];//除非有相应的视图元素,否则不需要
$scope.messagesSent=[];//只有在两个异步获取正在进行时,如果要使视图元素为空,才需要执行此操作。
var receivedPromise=Message.getMessenger消息(localStorage.getItem('token')、localStorage.getItem('contact');
var sentPromise=Message.getMessenger消息(localStorage.getItem('contact')、localStorage.getItem('token'))。然后(函数(消息){

对于(var i=0;i@julianaMorales这对我来说还不够。你能详细说明它是如何失败的吗?当我在其视图上显示$scope.messages时empty@julianaMorales这对我来说还不够。你能详细说明一下它是如何失败的吗?当我在视图上显示$scope.messages时,它是空的
Message
API是异步的。将数据从每个
内部推送到
$scope.messages
数组中。然后
块。可能重复的
消息
API是异步的。将数据从每个
内部推送到
$scope.messages
数组中。然后
块。可能重复的
$scope.messages = $scope.messages
                        .concat($scope.messagesRecieved)
                        .concat($scope.messagesSent);
// $scope.messagesRecieved = []; // not necessary unless there's a corresponding view element
// $scope.messagesSent = []; // not necessary unless there's a corresponding view element
$scope.messagesSent = []; // you only need to do this if you want to nullify a view element while the two async gets are underway.

var receivedPromise = Message.getMessengerMessages(localStorage.getItem('token'), localStorage.getItem('contact'));

var sentPromise = Message.getMessengerMessages(localStorage.getItem('contact'), localStorage.getItem('token')).then(function(messages) {
    for(var i=0; i<messages.length; i++) {
        if(messages[i].read == 'no') {
            Message.modifyRead(messages[i]._id); // if Message.modifyRead() is async, this code block is a bit different
        }
    }
});

Promise.all(receivedPromise, sentPromise).then(function(messagesRecieved, messagesSent) {
    $scope.messages = messagesRecieved.concat(messagesSent);
});