setTimeout внутри Promise Race сразу ловит - PullRequest
0 голосов
/ 16 октября 2019

У меня есть 2 обещания: fetch и setTimeout, выбор ожидания в течение 5 секунд и setTimeout, ожидание 4 секунд.

Я не знаю почему, но setTimeout срабатывает немедленно!

myService( args )
    .then( result => {
        console.log(result);
    })  
    .catch( timeoutError => {  // <-----------------  FIRE IMMEDIATELY
        console.error(timeoutError);
    })
;


function myService( args ){
    return Promise.race([
        fetch("http://localhost/wait-ten-seconds"),
        new Promise( (_, timeexpired) => {
            return setTimeout( function() {
                console.log("timeout");
                timeexpired({msg: "call timeout", code: 100, data: null});
            }
            , 4000)
        })
    ]);
}

...