javascript - Keraguan tentang setTimeout dan Promise
代言
代言 2017-06-12 09:21:50
0
5
755

menyatakan kekeliruan tentang perbezaan antarasetTimeout(resolve('World'), ms);setTimeout(resolve, ms, 'World');dan

.
function timeout(ms = 100) { /*1. 为何这种写法,立即返回数据而不是等到过了 ms 后才返回*/ // return new Promise((resolve, reject) => { // setTimeout(resolve('World'), ms); // }); /*2. 为何这种写法,等到过了 ms 后才返回*/ return new Promise((resolve, reject) => { setTimeout(resolve, ms, 'World'); }); } timeout(1000) .then(value => { console.log(`Hello, ${value}`); }) .catch(err => { console.error(err); });
代言
代言

membalas semua (5)
習慣沉默

Ini ialah perbezaan antara func() dan func Parameter pertama setTimeout ialah func Jika func() digunakan, ia bersamaan dengan nilai pulangannya sebagai parameter pertama.
Contohnya:

function test(){ console.log('this is test!'); return function () { console.log('this is return!'); } } setTimeout(test(), 1000);

kira-kira bersamaan dengan:

console.log('this is test!'); setTimeout(function () { console.log('this is return!'); }, 1000);
    三叔

    Parameter pertama yang diluluskan dilaksanakan serta-merta, bukan nama fungsi

      淡淡烟草味

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

      var test = function(value){ console.log(value); } setTimeout(test('hello') , 2000);

      Laksanakan segera pada masa initest.

        曾经蜡笔没有小新

        Parameter pertama setTimeout mestilah fungsi

        Satu fungsi

        Satu fungsi

        (Kenapa ramai yang tak faham)

        setTimeout(resolve, ms, 'World');其中resolve是一个函数,因此这段的行为正常
        setTimeout(resolve('World'), ms);其中resolve('World')不是函数,是什么决定于resolve的返回值类型,但无论如何,resolveApabiladaftar pemasa, ia telah pun dilaksanakan, jadi secara semula jadi tiada kesan kelewatan

          巴扎黑

          =====================================
          Jawapan berikut adalah tidak sah: Saya tidak menyemak soal dengan teliti. .
          Secara amnya tiada perbezaan.

          Hanya! ! ! !

          Ada masalah dengan sokongansetTimeout(resolve, ms, 'World')dalam pelayar IE. (Nampaknya IE

          Bahan rujukan: (lihat nota berlatar belakang kuning di dalam)

          WindowOrWorkerGlobalScope.setTimeout()

            Muat turun terkini
            Lagi>
            kesan web
            Kod sumber laman web
            Bahan laman web
            Templat hujung hadapan
            Tentang kita Penafian Sitemap
            Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!