2017-03-08 16 views
1

나는 React로 놀고 있었고, 작동 제한 시간 함수를 얻으려고했다. https://github.com/reactphp/promise-timer#timeout의 예와 단위 테스트 (일종의)에 따라 내가 함께했다 :React PHP timeout은 항상 해결

use React\Promise\Timer; 

$promise = uncertainOperation(); 
$loop = \React\EventLoop\Factory::create(); 

Timer\timeout($promise, 1, $loop)->then(
    function ($value) { 
     var_dump($value); 
    } 
    , 
    function ($error) { 
     var_dump($error); 
    } 
); 

$loop->run(); 

function uncertainOperation() { 
    return new React\Promise\Promise(
     function ($resolve) { 
      for($i = 0; $i < 30000000; $i++) { } 
      $resolve("Done"); 
     } 
    ); 
} 

하지만이없이 항상 내가 타이머 \ 제한 시간의 시간을 설정하는 방법 낮은 "완료"로 해결되지 않습니다. 내가 뭘 놓치고 있니?

답변

1

코드와 관련된 문제는 차단된다는 것입니다. 그리고 그것은 약속을 동시에 해결합니다. 그것은 이벤트 루프 드라이버로 돌아 가지 않으므로 타임 아웃 감시자를 스케줄 할 수 있습니다.

타임 아웃을 예를 들어 시뮬레이션으로 사용하도록 코드를 변경해보십시오. 네트워크 타임 아웃.

function uncertainOperation($loop) { 
    return new React\Promise\Promise(
     function ($resolve) use ($loop) { 
      $loop->addTimer(5, function() { 
       $resolve("Done"); 
      }); 
     } 
    ); 
} 

$loop->run(); 

불행하게도 React에서 루프를 전달해야합니다.