setTimeout函数的第三个参数是什么?

时间:2018-12-10 06:37:51

标签: javascript es6-promise

我正在使用Promise对象读取一些代码。

有一个带有三个参数的setTimeout函数,我想知道第三个参数做什么?因为通常它只有两个参数。

代码如下:

function timeout(ms) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, ms , 'done');
    });
}
timeout(1000).then(value => {
    console.log(value);
});

我注意到第三个参数传递给了resolve函数,但是为什么我可以在then的函数中使用它呢?如何运作?

2 个答案:

答案 0 :(得分:1)

下面两个示例都可以对此进行解释

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // expected output: Array [3, 42, "foo"]
});

上面的例子可以写成:-

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('foo');
  }, 100)
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // expected output: Array [3, 42, "foo"]
});

简而言之,第三个参数是用户需要传递给setTimeout提供的引用函数的参数。我们可以将此功能称为“参数结转”。

答案 1 :(得分:0)

它用于传递您可能在函数中使用的其他参数(参数)。这些不是义务。

以下是有关参数和参数的更多信息的链接: https://www.w3schools.com/js/js_function_parameters.asp

希望这会有所帮助。