https://github.com/danwrong/restler http://nodejs.org/javascript restler come bloccare/aspettare su una richiesta
al fine di scaricare un file, io sto usando restler da nodejs in uno script lato server (non da un browser Web client).
ho potuto utilizzare il modo asincrono per generare un evento quando il download è completato, come segue:
rest = require('./restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
sys.puts('Error: ' + result.message);
this.retry(5000); // try again after 5 sec
} else {
sys.puts(result);
}
});
ma io preferisco usare un modo di sincronizzazione questa volta.
come posso chiamare questo e bloccare/attendere fino a quando non ottengo la risposta?
e come ottenere i dati o errore dopo
var req = rest.get('http://twaud.io/api/v1/users/danwrong.json');
// how to block/wait here until file is downloaded
if (req.response instanceof Error) { // this does not worn neither
...
} else {
...
}
C'è una grande ragione di avere metodi asincroni e si bloccherà l'intero processo che comporterà l'inattività di altre richieste/risposte. C'è sempre un modo per aggirarlo e utilizzare i metodi asincroni attuali. Per favore, potresti descrivere quale motivo vuoi avere una situazione di blocco, e potrebbe esserci una buona soluzione per rimanere asincrona con soddisfacenti bisogni logici delle tue sfide. – moka
non è uno script in un browser client. è un semplice script in un server, che viene eseguito e completato quando il download è pronto. non ho bisogno di async qui. –
Scaricherà e attiverà "finito" con sincronizzazione o asincrono, non è rilevante allora. Quindi la domanda "perché dovresti fare la sincronizzazione", se asincrono è lo stesso risultato? Ad ogni modo. 'restler' non ha metodi' sync' o opzioni per i metodi. Potresti implementarlo da solo. – moka