Last active
October 19, 2018 19:25
-
-
Save bao-qian/cc8d8b0b46a7477e2e917514a051ed57 to your computer and use it in GitHub Desktop.
recursion await vs promise
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function delay(t, v) { | |
return new Promise(function(resolve) { | |
setTimeout(resolve.bind(null, v), t) | |
}); | |
} | |
function f1(count = 10) { | |
console.log('f1', count) | |
let p = delay(10).then(() => { | |
if (count > 0) { | |
return f1(count - 1) | |
} else { | |
return count | |
} | |
}) | |
return p | |
} | |
async function f2(count = 10) { | |
console.log('f2', count) | |
await delay(10) | |
if (count > 0) { | |
return await f2(count - 1) | |
} else { | |
return count | |
} | |
} | |
let r1 = f1() | |
r1.then((v)=>console.log('then1', v)) | |
let r2 = f2() | |
r2.then((v)=>console.log('then2', v)) | |
/* | |
f1 9 debugger eval code:8:5 | |
f2 9 debugger eval code:20:5 | |
f1 8 debugger eval code:8:5 | |
f2 8 debugger eval code:20:5 | |
f1 7 debugger eval code:8:5 | |
f2 7 debugger eval code:20:5 | |
f1 6 debugger eval code:8:5 | |
f2 6 debugger eval code:20:5 | |
f1 5 debugger eval code:8:5 | |
f2 5 debugger eval code:20:5 | |
f1 4 debugger eval code:8:5 | |
f2 4 debugger eval code:20:5 | |
f1 3 debugger eval code:8:5 | |
f2 3 debugger eval code:20:5 | |
f1 2 debugger eval code:8:5 | |
f2 2 debugger eval code:20:5 | |
f1 1 debugger eval code:8:5 | |
f2 1 debugger eval code:20:5 | |
f1 0 debugger eval code:8:5 | |
f2 0 debugger eval code:20:5 | |
then1 0 debugger eval code:30:14 | |
then2 0 debugger eval code:33:14 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment