필자는 동기화 작업이 필요한 약속 개체를 보유하고 있습니다. 예를 들어 첫 번째 약속이 완료되기 전에 두 번째 약속이 작동해서는 안됩니다. 첫 번째가 거절하면 먼저 다시 실행해야합니다.약속 개체를 동기화하는 방법?
몇 가지 예를 구현했습니다.이 중 하나가 효과적입니다. 반환, GETVAL 전화 2000ms 대기 , 나는 ++, 다시
getVal() {
return new Promise(function(resolve, reject) {
setTimeout(function(){ resolve(19) }, 2000);
});
}
async promiseController(){
for(var i =0;i<5;i++)
{
var _val = await this.getVal()
console.log(_val+'prom');
}
}
..... GETVAL를 호출하지만 약속 객체의 배열을 제어 할 필요가있다. 내가 원하는 것은 데이터가 있고 그것을 5 조각으로 나누었습니다. 첫 번째 부분이 처리 된 후 (예 : 서버로 전송) 잘 두 번째 부분을 처리하려면 그렇지 않으면 첫 번째 부분을 다시 처리해야합니다.
이
는이 코드가 순차적으로 작동에getVal() {
return new Promise(function(resolve, reject) {
setTimeout(function(){ resolve(19) }, 2000);
});
}
async promiseController(){
var proms=[]
for(var i =0;i<5;i++)
{
proms.push(this.getVal())
}
for(var i =0;i<5;i++)
{
var _val = await proms[i]
console.log(_val+'prom');
}
}
약속 개체를 만든 프로토 타입 구현입니다. 첫 번째 예제처럼 동기식으로 작동하도록 아래 코드를 어떻게 수정합니까?
당신이 ['Promise.all()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)을 수행하려고하는지 알 수 없습니다./모두) 또는 당신이 당신의 약속이 Waterfall 타입의 것을 더 원한다면. – zero298
promise.all()이 작동하지 않습니다. 약속을 지키면 라인을 거부합니다. 내 상황에서 나는 그들 모두가 그렇지 않으면 쓸모가 없어야한다. –
첫 번째 약속을 되 돌리는 재귀 호출이 해결되지 않는다면 예상되는 결과는 무엇입니까? – guest271314