ich versuche die folgende Herausforderung lösen, wo ich triggerActions
eine Funktion zu schreiben, die einen Rückruf in die processAction
gibt, und erzeugt die Ausgabe:Javascript Coding Herausforderung mit setTimeout/Asynchronous Output
"Process Action 1"
"Process Action 2"
...
"Process Action n"
Hier wird die zur Verfügung gestellt wird Funktion:
function processAction(i, callback) {
setTimeout(function() {
callback("Processed Action " + i);
}, Math.random()*1000);
}
Funktion zum Code:
function triggerActions(count) {
}
Beachten Sie, dass der Code für processAction
nicht geändert werden kann. Ich dachte daran, ein Versprechen zu verwenden, aber ich bin mir nicht sicher, wie. Ich glaube, das setTimeout ist eigentlich synchron, so dass ich nicht weiß, ob async/await funktionieren würde.
Mein Versuch:
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 ist eigentlich ** a ** synchron - hast du versucht ** irgendein ** Code, ro willst du jemanden die Herausforderung insgesamt für dich lösen? –
[Promisify] (https://StackOverflow.com/q/22519784/1048572) 'processAction', dann' async' /'await' funktioniert. – Bergi
@JaromandaX Ich habe gerade meinen Post mit meinem Code bearbeitet. – fafafariba