Je suis en train de résoudre le défi suivant où je dois écrire une fonction triggerActions
qui passe un rappel dans le processAction
et produit la sortie:codage JavaScript défi avec setTimeout/Asynchronous Sortie
"Process Action 1"
"Process Action 2"
...
"Process Action n"
Voici la condition fonction:
function processAction(i, callback) {
setTimeout(function() {
callback("Processed Action " + i);
}, Math.random()*1000);
}
fonction de code:
function triggerActions(count) {
}
Notez que le code processAction
ne peut pas être modifié. Je pensais utiliser une promesse mais je ne sais pas comment. Je crois que le setTimeout est réellement synchrone donc je ne sais pas si async/await fonctionnerait.
Ma tentative:
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 est en réalité ** a ** synchrone - avez-vous essayé ** tout ** code, vous voulez quelqu'un pour résoudre le défi au total pour vous? –
[promisify] (https://stackoverflow.com/q/22519784/1048572) 'processAction', puis' async' /'await' fonctionnera. – Bergi
@JaromandaX Je viens d'éditer mon post avec mon code. – fafafariba