Sto cercando di utilizzare le nuove funzionalità asincrone di ES7 e spero che risolvere il mio problema aiuterà gli altri in futuro. Questo è il mio codice che sta lavorando:Combinazione di funzione asincrona + attendi + setTimeout
async function asyncGenerator() {
// other code
while (goOn) {
// other code
var fileList = await listFiles(nextPageToken);
var parents = await requestParents(fileList);
// other code
}
// other code
}
function listFiles(token) {
return gapi.client.drive.files.list({
'maxResults': sizeResults,
'pageToken': token,
'q': query
});
}
Il problema è che il mio ciclo while corre troppo veloce e lo script invia troppe richieste al secondo per l'API di Google. Pertanto vorrei creare una funzione sleep che ritardi la richiesta. Quindi potrei usare questa funzione anche per ritardare altre richieste. Se c'è un altro modo per ritardare la richiesta, faccelo sapere.
In ogni caso, questo è il mio nuovo codice che non funziona. La risposta della richiesta viene restituita alla funzione async anonima all'interno del setTimeout, ma non so come posso restituire la risposta alla funzione sleep risp. alla funzione iniziale asyncGenerator.
async function asyncGenerator() {
// other code
while (goOn) {
// other code
var fileList = await sleep(listFiles, nextPageToken);
var parents = await requestParents(fileList);
// other code
}
// other code
}
function listFiles(token) {
return gapi.client.drive.files.list({
'maxResults': sizeResults,
'pageToken': token,
'q': query
});
}
async function sleep(fn, par) {
return await setTimeout(async function() {
await fn(par);
}, 3000, fn, par);
}
ho già provato alcune opzioni: memorizzare la risposta in una variabile globale e restituirlo a partire dalla funzione sleep, richiamata all'interno della funzione anonima, ecc
Adoro l'approccio 'Promise.all'. Così semplice ed elegante! –
cosa rappresenta la notazione di 'var [genitori]'? Non l'ho visto prima ed è una cosa difficile da google – natedog
@NateUsher È [array destructuring] (https: // stackoverflow.it/q/3986348/1048572) – Bergi