【问题标题】:JavaScript promise resolving with setTimeoutJavaScript 承诺使用 setTimeout 解决
【发布时间】:2017-10-03 19:12:38
【问题描述】:

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

我对整个 'promise' 东西很陌生,而且我正在学习的教程经常使用带有 setTimeout 的 Promise。

  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 )
  );

【问题讨论】:

  • 因为第二个调用该方法并返回它返回的内容由setTimeout调用......

标签: javascript settimeout es6-promise


【解决方案1】:
/* why does setTimeout work with this one... */
 setTimeout( () => resolve( 'Job\'s done!!!' ), 3000 );

当超时发生时,你调用一个函数() => ... 至极执行直到解决承诺

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

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

写作

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

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

【讨论】:

  • 是的,这确实很有意义。谢谢
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2019-10-18
相关资源
最近更新 更多