ホームページ  >  に質問  >  本文

javascript - setTimeout と Promise に関する疑問

setTimeout(resolve('World'), ms);setTimeout(resolve, ms, 'World'); の違いがわかりません。

リーリー
代言代言2665日前781

全員に返信(5)返信します

  • 習慣沉默

    習慣沉默2017-06-12 09:23:50

    これが func() と func の違いです。 setTimeout の最初のパラメータは func() が使用される場合、その戻り値は最初のパラメータと同等です。
    例:

    リーリー

    次とほぼ同等:

    リーリー

    返事
    0
  • 三叔

    三叔2017-06-12 09:23:50

    関数名ではなく、渡された最初のパラメータがすぐに実行されます

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:23:50

    Promise无关,当你执行到setTimeout(resolve('World'), ms);时,浏览器就已经自动执行了resolve('World')、例:

    リーリー

    この時点ですぐに実行test

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-12 09:23:50

    setTimeout の最初のパラメータは関数である必要があります

    関数

    関数

    (なぜ多くの人が理解できないのか)

    setTimeout(resolve, ms, 'World'); 其中 resolve 是一个函数,因此这段的行为正常
    setTimeout(resolve('World'), ms); 其中 resolve('World') 不是函数,是什么决定于 resolve 的返回值类型,但无论如何,resolveタイマーを登録した時点ではすでに実行されているので、当然遅延効果はありません

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-12 09:23:50

    ====================================
    次の回答は無効です: 私はレビューしませんでした慎重に質問してください。 。
    一般的には違いはありません。

    ただ! ! ! !

    IE ブラウザでの setTimeout(resolve, ms, 'World') のサポートに問題があります。 (IE <= 9 では問題が発生するようです)

    参考資料:(中の黄色背景のメモを参照)

    WindowOrWorkerGlobalScope.setTimeout()

    返事
    0
  • キャンセル返事