2017-09-15 93 views
-2

我想按順序完成這3個任務 我該怎麼做? 使用異步/等待或承諾或任何其他方式按順序執行這些任務 - Node.js

// task 1 
ctx.telegram.sendMessage(MasterID, `⭐⭐⭐new order⭐⭐⭐`) 

// task 2 
for (var key in pricetag) { 
    if (pricetag.hasOwnProperty(key)) { 
    if ((pricetag[key] * ctx.session.quantity[key]) != 0) { 

     ctx.reply(`" ${key} " , " ${ctx.session.quantity[key]} " | " ${ctx.session.totalprice[key].format3dig(0, 3, ',')} " $`) 
     console.log(pricetag[key] * ctx.session.quantity[key]); 
     ctx.session.sumtotalprice = ctx.session.sumtotalprice + 
     ctx.session.totalprice[key]; 

    } 
    } 
} 

// task 3 
ctx.telegram.sendMessage(MasterID, `⭐⭐⭐end of order⭐⭐⭐`) 

非常感謝

+1

請問您可以標註這三項任務嗎? –

+0

@JoelCDoyle對不起,我糾正它 –

回答

0

由於sendMessage返回一個承諾,你可以使用.then()等待承諾來解決:

ctx.telegram.sendMessage(MasterID, `⭐⭐⭐new order⭐⭐⭐`).then(function(response) { 
    for (var key in pricetag) { 
    if (pricetag.hasOwnProperty(key)) { 
     if ((pricetag[key] * ctx.session.quantity[key]) != 0) { 

     ctx.reply(`" ${key} " , " ${ctx.session.quantity[key]} " | " ${ctx.session.totalprice[key].format3dig(0, 3, ',')} " $`) 
     console.log(pricetag[key] * ctx.session.quantity[key]); 
     ctx.session.sumtotalprice = ctx.session.sumtotalprice + 
     ctx.session.totalprice[key]; 

     } 
    } 
    } 

    ctx.telegram.sendMessage(MasterID, `⭐⭐⭐end of order⭐⭐⭐`) 
}); 

for循環是同步的,所以之後沒有什麼特別的事情要做。

+0

非常感謝,如果我們有3個或更多的循環,如果還有回報承諾呢? –

+0

編號'for'循環是同步的。他們按照他們寫的順序執行。不需要使用承諾 –

+0

是否有任何引用哪些元素是同步的,哪些是異步的? –