수율 및 공동
답변
예, co이 가능합니다. 당신은 co
호출 내에서 부모 함수를 래핑해야합니다 :
co(function *(){
var someVar = yield functionThatReturnsAPromise();
})()
someVar
try {} catch (e) {}
문으로 오류를 찾아 낼 수 있습니다.
은'약속 {
일반적으로 yield 작업은 생성자의 호출 함수에 대해 자체 값 지정 실행 (yield 함수의 왼쪽 편)에 동일한 값을 반환합니다.
function* inc() {
var g = 0;
while (true) {
g = yield g + 1;
}
}
var incGen = inc();
for (i = incGen.next().value; i <= 5; i = incGen.next(i).value) {
console.log(i); // ^input of generator is last output
}
그러나, 호출 함수는 또한 호출 할 수있다 : 1 내지 5 예와 수율의 입력을 계산이 간단한 예에서, 상기 발전기의 실행 경로뿐만 아니라 발전기 함수 수율의 출력은 출력을 마지막 값으로 다른 값으로 대체하거나 생성기의 실행에 예외를 던지십시오. 약속의 경우 약속을 반환하는 기능은 약속 자체 대신 약속의 결과를 산출 할 수 있습니다. 이 경우 그래서 :
var someVar = yield functionThatReturnsAPromise();
^output != ^input
당신은 수율이 입력으로 약속을 받아 발전기 함수의 출력으로 해결 약속을 반환하는 함수 역할을합니다.
그렇게되면 co
이 정확하게 수행 할 수 있습니다. 이 여기에, 작동하는 함수의 예 어떻게
co(function *(){
var someVar = yield functionThatReturnsAPromise();
})
더 잘 이해하기 위해 공동으로 같은 일을 :
function async(makeGenerator){
return function(){
var generator = makeGenerator.apply(this, arguments)
function handle(result){
if (result.done) return result.value
return result.value.then(function (res){
return handle(generator.next(res)) // <- sets output of yield to the promise result
}, function (err){ // and returns input promise
return handle(generator.throw(err)) // <- throw promise exception to generator function
})
}
return handle(generator.next()) // <- first time call, input of yield is a promise
}
}
당신이 할 필요가
co
기능 발전기 기능을 공급한다
source is from Forbes Lindesay's now famous presentation about this concept
* 일반적으로 yield는 생성자의 호출 함수에 대해 자신의 일시 중지 된 실행 (yield 함수의 왼쪽 편)에 동일한 값을 반환하는 함수로 작동합니다. 이 간단한 예제에서 yield의 입력은 생성기 함수의 출력뿐만 아니라 생성자의 실행 경로 *에도 적용됩니다. 사실 나는이 문장을 분석 할 수 없다. 그러나 그것이 잘못되었다고 생각합니다. –
생성자가 아닌 함수 인 'inc'에서는 yield를 사용할 수 없습니다. –
@ HåvardGeithus 수정 –
- 1. 직렬화 및 수율 문
- 2. 수율
- 3. 수율
- 4. 수율 및 템플릿 내부 제공 (
- 5. 파이썬 수율
- 6. 튜플로부터의 수율
- 7. 수율 waitforseconds()
- 8. 공동 작성 및 문서
- 9. 스레드 클래스의 수면, 수율 및 조인
- 10. 부분적으로 레일 수율 및 content_for 부분에
- 11. 루비 블록 및 수율 이해에 어려움이 있음
- 12. 공동
- 13. Fortran에서 OpenMP로 수율 손실
- 14. 공동 및 반항의 간단한 예제
- 15. 컴퓨팅 분산 및 공동 분산
- 16. AJAX 실시간 및 공동 작업
- 17. 공동 영상 및 데이터 표시
- 18. 이벤트 대 수율
- 19. 다른 프로세스 사이의 수율
- 20. 발전기 수율 값 차이
- 21. 점검 수율 반환 항목
- 22. 수율 구문의 자세한 정보
- 23. Ruby : 오버로드 수율 함수
- 24. 레일 : 약 수율
- 25. 레일 수율 헤더
- 26. 어떻게 수율 루프
- 27. 대안 수율 쓰기
- 28. 어떻게 동적에 대한 수율
- 29. MySQL에서 수율 계산
- 30. Ruby의 수율과 Rails의 수율
아니오,'someVar == Promise'는 사실이 아닙니다. 'somevar'는 반복자를 호출하는 함수가'next'를 사용하여 반환 된 값을 얻은 후에'next'에 매개 변수로 전달 된 값과 같습니다. –
@torazaburo - 당신 말이 맞아요.하지만 이건 거의 2 년전의 대답입니다. 실제 질문과 관련이없는 내용은 부적합합니다. –