JavaScript承诺使用setTimeout解析

时间:2017-10-03 19:12:38

标签: javascript settimeout es6-promise

我不明白为什么第一个setTimeout函数有效,但第二个没有。当我运行第二个setTimeout时,第一个被注释掉。但不是在3秒后解决,而是立即解决。

我是整个'承诺'的新手,而我正在使用的教程使用了很多的setTimeout承诺。

  let promise = new Promise( ( resolve, reject ) => {

     /* why does setTimeout work with this one... */
     setTimeout( () => resolve( 'Job\'s done!!!' ), 3000 );

     /* but not with this one */
     setTimeout( resolve('done'), 3000 );
  } );

  promise.then(
     result => alert( result )
  );

1 个答案:

答案 0 :(得分:3)

/* why does setTimeout work with this one... */
 setTimeout( () => resolve( 'Job\'s done!!!' ), 3000 );

超时发生时,执行时调用函数() => ...,直到解除承诺

/* but not with this one */
 setTimeout( resolve('done'), 3000 );

这里你实际上解决了promise(执行结果函数)并将结果传递给setTimeout函数。

书写

() => resolve( 'Job\'s done!!!' )

相同
function() {
    resolve( 'Job\'s done!!!' );
}