3
순차적으로 실행해야하는 두 개의 비동기 함수 (두 번째 것은 첫 번째 결과에 따라 다름)가 있고 일단 실행되면 두 함수의 결과를 사용해야합니다. 는 "고전"콜백 기반 패턴에서, 그 꽤 쉽게 :이 사용 Q 약속을 다시하기 위해 노력하고있어Q chaining 여러 결과 값 가져 오기
function getOriginalString(callback) {
callback("An original string");
}
function uppercase(x, callback) {
callback(x.toUpperCase());
}
getOriginalString(function(orig) {
uppercase(orig, function(upper) {
console.log(orig, upper); //Access to both results
});
});
. 여기에 내가 가진 무엇 :
function getOriginalString() {
var deferred = Q.defer();
deferred.resolve("An original string");
return deferred.promise;
}
function uppercase(x) {
var deferred = Q.defer();
deferred.resolve(x.toUpperCase());
return deferred.promise;
}
getOriginalString()
.then(uppercase)
.then(function(result) {
console.log(result);
})
.done();
문제는 내가 마지막 함수 호출, uppercase
의 결과에 액세스 할 수 있습니다. 콜백 기반 예제와 같이 두 함수의 결과에 액세스 할 수 있어야합니다.
약속을 통해이를 수행하는 적절한 방법은 무엇입니까?
@ barry-johnson이 솔루션에 대해 순차적이지 않은 것은 무엇입니까? –
당신은 정확합니다 - 나는 방금 Q.all()을 읽었지 만 네가 여기서 사용하는 방식대로 작동합니다. –
네, 제 실제 함수는 실제로 비동기입니다. –