我試圖解決以下挑戰,我必須編寫傳遞一個回調到processAction
功能triggerActions
,併產生輸出:JavaScript編碼挑戰與的setTimeout /異步輸出
"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;
}
setTimeout的其實是** A **同步 - 你試過** **的任何代碼,RO你想有人來解決總的挑戰嗎? –
[promisify](https://stackoverflow.com/q/22519784/1048572)'processAction',然後'async' /'await'將工作。 – Bergi
@JaromandaX我剛剛用我的代碼編輯了我的帖子。 – fafafariba