异步转同步
Promise+async+await异步转同步
单线程的时候,异步是比较好的,它不需要等待执行而是继续执行后面的代码,但是在我们需要先根据异步的结果而执行的时候,又不想弄太多回调,就可以转成同步去操作
实现方式如下:
将异步包含在Promise对象重,然后返回promise对象,就可以实现了
然后再用async和await组合调用
function test() {
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
var d = new Date()
console.log("异步执行", d.getHours(), d.getMinutes(), d.getSeconds());
resolve('cs');
}, 2000);
console.log("promise内部")
})
return p;
}
async function ceshi() {
await test();
console.log("aaa")
}
console.log("222")
ceshi();
console.log("外部")
这段代码执行过程为 先执行console.log(“222”);
然后进入ceshi()方法重,在ceshi方法中,setTimeout是异步的,所以先执行console.log(“promise内部”),然后等待异步执行,再结束ceshi()方法的调用,然后再执行console.log(“外部”)
输出的结果为