1 - async await (node 7 --harmony или babel)
async function go(){
let p1 = await promise1(...);
let p2 = await promise2(p1);
let p3 = await promise3(p2);
return p3;
}
go().then(response=>{
console.log(response); // <= p3
}).catch(console.error);
2. Можно использовать модуль vo (там есть режим последовательной отработки промисов, менее удобно.
3. Писать нечто такое:
promise1
.then(response1=>{
return promise2(response1);
})
.then(response2=>{
return promise3(response2);
})
.then(response3=>{
console.log(response3) // <=ваш результат
})
.catch(console.error);
Естественно все функции promise1, promise2, promise3 это такого рода функции:
const promise = (params) => new Promise((resolve, reject) => { ..... какой - то код });