Promise链式,如何解决同步异步问题?

我想实现任务1.2.3.4按顺序执行,但是目前程序是按1.3.4.2执行,请问有办法解决吗?

var do1=new Promise((resolve,reject)=>{console.log("任务1"), resolve()});
var do2=new Promise((resolve,reject)=>{setTimeout(() => {resolve(console.log("任务2"));}, 1000);});
var do3=new Promise((resolve,reject)=>{console.log("任务3"), resolve()});
var do4=new Promise((resolve,reject)=>{console.log("任务4"), resolve()});

var p = new Promise((resolve,reject)=>{resolve()});
p.then(do1)
.then(do2)
.then(do3)
.then(do4);

随手写的,感觉还有更简单的办法我想到了再加上


function do1() {
    return new Promise((resolve, reject) => { console.log("任务1"), resolve() })
}
function do2() {
    return new Promise((resolve, reject) => { setTimeout(() => { resolve(console.log("任务2")) }, 1000) })
}
function do3() {
    return new Promise((resolve, reject) => { console.log("任务3"), resolve() })
}
function do4() {
    return new Promise((resolve, reject) => {console.log("任务4"), resolve() })
}

async function mainWithAsync() {
    await do1()
    await do2()
    await do3()
    await do4()
}
mainWithAsync()
p.then(async() => {
  await do1();
  await do2();
  await do3();
  await do4();
})

new Promise直接就执行了,你后面写的p,then(...没啥用