function slowDouble( value ){
return new Promise( resolve =>{
setTimeout( ()=>{
resolve(value*2);
}, 3000 );
});
}
function nonAsyncDouble( value ){
console.log( value );
return value * 2;
}
async function double( value ){
console.log( value );
let result = await slowDouble( value );
return result;
}
console.time( "promise" );
slowDouble(2).then( i=>{ console.log( "Promise ", i ); console.timeEnd( "promise" ); } );
console.time( "async" );
console.log( double(2) );
console.timeEnd("async");
console.time( "map" );
let doubled = [1,2,3].map( nonAsyncDouble );
console.log( "NonAsyncDouble ", doubled );
console.timeEnd("map");
console.time( "mapAsync" );
let doubledAsync = [1,2,3].map( function(i) { return double(i) });
console.log( "AsyncDouble ", doubledAsync );
console.timeEnd( "mapAsync" );