I would like to understand the difference between the two code snippets, both resolving promises in different ways but receiving the same result (resolving after a second).
Which one is the right way?
function longTask(){ return new Promise((resolve, reject) => setTimeout(() => resolve(), 1000) )} longTask().then(() => console.log("done"));
function longTask(){ return new Promise((resolve, reject) => setTimeout(resolve, 1000) )} longTask().then(() => console.log("done"));
Advertisement
Answer
In this case, where you’re not resolving with a value, there is no difference. In situations where you need to resolve the promise with a value, you would want to use the first example so you can control what is passed into the resolve
function.
function longTask(){ return new Promise((resolve, reject) => setTimeout(() => resolve(someResolvedValue), 1000) )} longTask().then(() => console.log("done"));
Edit: Or you can use the second example and pass the resolved value as the third argument to setTimeout. thanks to VLAZ for pointing this out.
function longTask(){ return new Promise((resolve, reject) => setTimeout(resolve, 1000, someResolvedValue) )} longTask().then(() => console.log("done"));