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