按顺序执行这些任务 - Node.js

时间:2017-09-15 13:45:43

标签: javascript node.js

我想按顺序完成这3项任务 我怎么能这样做? 使用Async / await或promises或任何其他方式

// 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 :(得分: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循环是同步的,因此之后没有什么特别的事情要做。