Fetch, then and setTimeout



如何在block中设置setTimeout ?我在这里设置了setTimeout,但是程序只是执行而不等待任何东西。


const controller = new AbortController();
const { signal } = controller.signal;
return fetch(url, { signal })
.then((response) => {
if (response.status === 404) {
controller.abort();
setTimeout(() => controller.abort(), 5000);
}
return response;
})
.then((response) => {
console.log('in');
setTimeout(() => controller.abort(), 5000);
return response.text();
})
.catch(() => {
return Promise.reject(new Error('empty link'));
});

我尝试在then块中设置settimeout,在catch块中,尝试为它使用返回promise的函数。逻辑似乎很简单,但不知何故,我不明白如何连接然后阻塞和settimeout功能。

setTimeout()呼叫不阻塞。如果你想"等待"对于x毫秒,您可以执行以下操作:

const timeout = (ms) => {
return new Promise(resolve => setTimeout(resolve, ms));
}
const doSomething = async () => {
await timeout(3000);
// after 3 seconds
}

最新更新