【发布时间】:2020-07-20 19:34:06
【问题描述】:
AsyncTimeout 只是将 setTimeout 包装在一个 Promise 中,这样它就可以在 Promise 链中使用。但是我没有看到实现reject()的好地方
function asyncTimeout(time, callback) {
return new Promise((resolve, reject) => {
setTimeout(() => {
const results = callback();
resolve(results);
}, time );
});
}
asyncTimeout(1000, (test) => {
console.log('resloved');
}).then(()=>{
console.log('now what')
});
【问题讨论】:
-
什么意思"实现
reject()"?在什么情况下应该拒绝承诺并去catch而不是then?我们不能告诉你。 -
reject已经为您实现了。由于您是程序作者,因此您可以根据自己的逻辑在任何地方调用它。你想在什么情况下拒绝承诺? -
将你的回调包裹在一个 try catch 中,并在那里拒绝......例如..
try { const results = callback() } catch(e) { reject (e) } -
为什么需要回调?
asyncTimeout(1000).then(...).then(...)...
标签: javascript promise settimeout