如何在 promise 构造函数中正确解析 promise
How to correctly resolve a promise within promise constructor
const setTimeoutProm = (delay) => new Promise(res => setTimeout(() => res(delay),delay))
我想做类似的事情,
const asyncOpr = (delay) => {
return new Promise((resolve, reject) => {
//update delay for some reason.
const updatedDelay = delay * 2;
setTimeoutProm(updatedDelay).then(res => {
resolve(res);
}).catch(err => {})
})
}
asyncOpr(2000).then(() => alert("resolved")) //this works
这按预期工作,但我不确定这样做是否正确,或者是否有更好的方法?
不,实际上你的做法是antipattern。
您可以 return 来自函数的承诺:
const asyncOpr = (delay) => {
return setTimeoutProm(delay);
};
如果需要,也可以从 .then
:
中 return 编辑 Promise
doA()
.then(() => setTineoutProm(1000))
.then(() => doB());
或者也可以在异步函数中等待:
async function asyncOpr(delay) {
//...
await setTimeoutProm(delay);
//...
}
const setTimeoutProm = (delay) => new Promise(res => setTimeout(() => res(delay),delay))
我想做类似的事情,
const asyncOpr = (delay) => {
return new Promise((resolve, reject) => {
//update delay for some reason.
const updatedDelay = delay * 2;
setTimeoutProm(updatedDelay).then(res => {
resolve(res);
}).catch(err => {})
})
}
asyncOpr(2000).then(() => alert("resolved")) //this works
这按预期工作,但我不确定这样做是否正确,或者是否有更好的方法?
不,实际上你的做法是antipattern。
您可以 return 来自函数的承诺:
const asyncOpr = (delay) => {
return setTimeoutProm(delay);
};
如果需要,也可以从 .then
:
doA()
.then(() => setTineoutProm(1000))
.then(() => doB());
或者也可以在异步函数中等待:
async function asyncOpr(delay) {
//...
await setTimeoutProm(delay);
//...
}