저는 새로운 약속이며 다음 실습에 매달 렸습니다.루프 내에서 중첩 된 약속을 연결합니다.
값 배열이 있으며 각 값에 비동기 호출을 실행하려고합니다. 콜백에서 첫 번째 호출 결과에 대해 다른 호출을 실행하려고합니다.
기본적으로, 나의 좌절은 다음에 있습니다 실행의 순서 것은해야한다 '1x2x3x'하지만 순서가 '123xxx'즉
때, 서브, 루프는 이미 다음 반복에가는 이 아마도 쉬운 솔루션입니다하지만 난 그것에 붙어
var values = ["1", "2", "3"];
function do(val) {
var deferred = Q.defer();
asyncCall(val)
.then(function(response) {
console.log(val);
asyncCall(response)
.then(function (response) {
console.log('x');
deferred.resolve(true)
});
});
return deferred.promise;
}
var result = do(values[0]);
values.forEach(function(f) {
result = result.then(do(f));
}
첫 번째 약속의/중첩 된 약속은 .. 아직 fullfilled되지 않습니다.
답장을 보내 주셔서 감사합니다. – strai
답변 해 주셔서 감사합니다. 그러나 나는 완전히 이해하지 못합니다. 다음과 같이 나는 연기 패턴을 제거하고 내 코드를 리팩토링 한 : 기능 (값) { 반환 asyncCall (값) 그 때는 (기능 (응답) { 을 console.log (응답)를 검색 ( 반환 response.asyncCall2을); } . (기능 (응답) { console.log (응답); }); 첫 번째 '그 다음'에 반환 할 수 있지만 asyncCall2의 약속은 두 번째로 전달되지 않습니다. – strai
@strai jsfiddle.net에서 피들을 만들 수 있습니까? 이것은 읽기가 어렵습니다 –