중첩 약속이 있고 약속은 다른 약속의 결과에 따라 다르므로 Angular.js가 해결하기 전에 gien 약속을 해결하도록 할 수 있습니다. 둘째.Angular.js에서 또 다른 약속을 풀기 위해 약속 기다리기
User.getAllUsers().then(function(users) {
$scope.users = users;
for (var i = 0; i < users.length; i++) {
console.log('username ' + users[i].username);
Message.getUnreadMessages(users[i].username, localStorage.getItem("token")).then(function(messages) {
console.log('username in second promise' + users[i].username);
$scope.messages.push(messages);
})
}
})
사용자와 메시지를 모두 서비스입니다 :
여기 내 코드입니다. console.log('username '+ users[i].username);
에 올바른 사용자 이름이 표시됩니다. console.log('username in second promise'+ users[i].username);
는 error`를 던졌습니다 :
User.getAllUsers().then(function(users) {
$scope.users = users;
for (var i = 0; i < users.length; i++) {
(function(user){
console.log('username ' + user.username);
Message.getUnreadMessages(user.username, localStorage.getItem("token")).then(function(messages) {
console.log('username in second promise' + user.username);
$scope.messages.push(messages);
})
})(users[i]);
}
})
이 https://developer.mozilla.org/en/docs/Web/JavaScript/Closures를 참조 장을 폐쇄 루프에 대해 :
이 시도 정의되지 않은
당신은 폐쇄를 만드는 것이 좋습니다. –
당신은 나에게 더 많은 정보를 줄 수 있어요. –