Вы можете использовать Array.reduce, чтобы уменьшить массив в одно обещание, которое связывает их одно за другим
let promisesArray = [q1,q2,q3] ;
function runSequentially(promiseArr) {
return promiseArr.reduce((accum, p) => accum.then(p), Promise.resolve())
}
//Example, this prints.. 1, 2, 3 then "done".
runSequentially([Promise.resolve(1).then(console.log), Promise.resolve(2).then(console.log), Promise.resolve(3).then(console.log)]).then(() => console.log("done"))