新手的一个async问题?
上代码:
function sleep() {
console.log('sleep start');
const p = Promise.resolve(); // p是一个resolved的promise对象
return p.then( () => {
setTimeout(console.log.bind(console, 'sleep 1000ms'), 1000);
}); //return 一个新的promise对象
}
async function init() {
console.log('init start');
await sleep();
console.log('init end');
}
init();
以上运行结果为:
init start
sleep start
init end
sleep 1000ms
而将sleep函数写成如下形式:
function sleep() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('sleep 1000ms');
resolve();
}, 1000);
});
}
则运行结果为:
init start
sleep start
sleep 1000ms
init end
// 正是预料中的结果
新人,对异步理解不透彻,请各位大佬解释一下运行结果为什么会不同?(我觉得执行结果应该一样啊╮(╯▽╰)╭)跪谢!