关于setTimeout 与 Promise 的疑惑

对于 setTimeout(resolve('World'), ms); 与 setTimeout(resolve, ms, 'World'); 有何不同之处表示不明白。


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

  });


杨魅力
浏览 494回答 1
1回答

开心每一天1111

就是func()和func的区别,setTimeout的第一个参数是func,如果用func()相当于其返回值为第一个参数。举个例子:function test(){    console.log('this is test!');    return function () {        console.log('this is return!');    }}setTimeout(test(), 1000);大致相当于:console.log('this is test!');setTimeout(function () {        console.log('this is return!');    }, 1000);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript