在异步函数中的 setTimeout 中执行代码?
executing code inside setTimeout in a asynchronous function?
一个简单的脚本,我想要实现的是在 append 方法中推送新项目,并使用异步函数
我试图了解 then 和 catch 是如何工作的,而不是在不了解它们内部如何工作(使用 axios 或其他东西)的情况下使用它们
推送必须在 3 秒后执行
我尝试在 setTimeout
中使用 resolve 方法,但出现错误,因为无法识别 resolve
,我正在返回一个 Promise,因为我无法等待 setTimeout
<script>
async function test(terms) {
let termss = await append(terms);
return [termss[termss.length - 2], termss[termss.length - 1]]
}
async function append(arr) {
var arrr = arr;
const waitFor = () => new Promise(resolve => {
setTimeout((resolve) => {
arrr.push("Taoufiq")
arrr.push("understands");
}, 3000)
});
await waitFor();
return arrr;
}
test([1, 2, 3, 9]).then((result) => {
console.log(result)
})
</script>
帮助理解这是如何工作的?
我的预期结果是返回一个包含 ["Taoufiq", "understands"]
的数组
你应该可以用下面的代码做你想做的事:
async function test(terms) {
let termss = await append(terms);
return [termss[termss.length - 2], termss[termss.length - 1]]
}
async function append(arr) {
return new Promise(resolve => {
setTimeout(() => {
arr.push("Taoufiq")
arr.push("understands");
resolve(arr)
}, 3000)
});
}
test([1, 2, 3, 9]).then((result) => {
console.log(result)
})
所以你必须 return append
函数中的新 Promise 并使用 Promise 构造函数在 setTimemout
中给你的 resolve
方法.
一个简单的脚本,我想要实现的是在 append 方法中推送新项目,并使用异步函数
我试图了解 then 和 catch 是如何工作的,而不是在不了解它们内部如何工作(使用 axios 或其他东西)的情况下使用它们
推送必须在 3 秒后执行
我尝试在 setTimeout
中使用 resolve 方法,但出现错误,因为无法识别 resolve
,我正在返回一个 Promise,因为我无法等待 setTimeout
<script>
async function test(terms) {
let termss = await append(terms);
return [termss[termss.length - 2], termss[termss.length - 1]]
}
async function append(arr) {
var arrr = arr;
const waitFor = () => new Promise(resolve => {
setTimeout((resolve) => {
arrr.push("Taoufiq")
arrr.push("understands");
}, 3000)
});
await waitFor();
return arrr;
}
test([1, 2, 3, 9]).then((result) => {
console.log(result)
})
</script>
帮助理解这是如何工作的?
我的预期结果是返回一个包含 ["Taoufiq", "understands"]
你应该可以用下面的代码做你想做的事:
async function test(terms) {
let termss = await append(terms);
return [termss[termss.length - 2], termss[termss.length - 1]]
}
async function append(arr) {
return new Promise(resolve => {
setTimeout(() => {
arr.push("Taoufiq")
arr.push("understands");
resolve(arr)
}, 3000)
});
}
test([1, 2, 3, 9]).then((result) => {
console.log(result)
})
所以你必须 return append
函数中的新 Promise 并使用 Promise 构造函数在 setTimemout
中给你的 resolve
方法.