用generator改写ajax

时间:2025-02-15 20:03:56
function request(url) {
// this is where we're hiding the asynchronicity,
// away from the main code of our generator
// `it.next(..)` is the generator's iterator-resume
// call
makeAjaxCall( url, function(response){
it.next( response );
} );
// Note: nothing returned here!
} function *main() {
var result1 = yield request( "http://some.url.1" );
var data = JSON.parse( result1 ); var result2 = yield request( "http://some.url.2?id=" + data.id );
var resp = JSON.parse( result2 );
console.log( "The value you asked for: " + resp.value );
} var it = main();
it.next(); // get it all started