gpt4 book ai didi

带有 setTimeout/异步输出的 Javascript 编码挑战

转载 作者:行者123 更新时间:2023-11-29 19:03:19 25 4
gpt4 key购买 nike

我正在尝试解决以下挑战,我必须编写一个函数 triggerActions 将回调传递给 processAction,并生成输出:

"Process Action 1"
"Process Action 2"
...
"Process Action n"

这是提供的功能:

function processAction(i, callback) {
setTimeout(function() {
callback("Processed Action " + i);
}, Math.random()*1000);
}

代码的功能:

function triggerActions(count) {

}

请注意,processAction 的代码无法更改。我正在考虑使用 Promise,但不确定如何使用。我相信 setTimeout 实际上是同步的,所以我不知道 async/await 是否有效。

我的尝试:

triggerActions = count => {
let promises = [];
for(let i=1; i<=count; i++) {
promises.push(new Promise( (resolve, reject) => processAction(i, str => resolve(str))));
}
let results = []
promises.forEach( promise => Promise.resolve(promise).then( async res => results.push(await res)));
return results;
}

最佳答案

我有点喜欢短小精悍:

var n = 5
var stop = 1

triggerActions = function(text) {
if (text) console.log(text)
if (stop <= n){
processAction(stop++, triggerActions)
}
}
triggerActions()

附言

我突然想到,也许您被允许提供一个函数,这意味着函数外的stop 变量声明是一个问题。它使它更加冗长,但您可以像这样将其全部包装在函数中:

function triggerActions(stop) {
var rFn = (text) => {
if (text) console.log(text)
if (stop <= n){
processAction(stop++, rFn)
}
}
rFn()
}
triggerActions(1)

关于带有 setTimeout/异步输出的 Javascript 编码挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45136221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com