在节点js中按顺序执行任务

时间:2017-06-26 20:12:56

标签: javascript node.js botkit

我想按顺序完成这些任务 但结果不符合规定 它就像 2 3 10 9 1 4 6 五 7 8

API来自NodeJS工具包telegraf

bot.hears('numbers', (ctx) => {

  ctx.reply("1")
  ctx.reply("2")
  ctx.reply("3")
  ctx.reply("4")
  ctx.reply("5")
  ctx.reply("6")
  ctx.reply("7")
  ctx.reply("8")
  ctx.reply("9")
  ctx.reply("10")
})

.then()将解决我的问题,但我有for循环的问题 .then()不能在这里工作

var x=[1,2,3,4,5,6,7,8]
    for (var key in x) {
      ctx.reply(`x`, Extra.HTML().markup((m) =>
        m.inlineKeyboard([
          m.callbackButton(`A`, `C`),
          m.callbackButton(`B`, `D`)
        ])
      )) .then(() => ctx.reply("*****************"))
    }

这不是真正的代码,var x是一个复杂的对象,A,B,C,D与x有关,我只是简单的代码



//// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  ~ # In The Name Of God # ~  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \\\\

//// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Defenitions , Variables  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \\\\

const Telegraf = require('telegraf')
const { Extra, Markup } = require('telegraf')
var token = '423782049:AAEvytBA8RtllgnCm_GFMfeP4ttTz6qsAGA';
const bot = new Telegraf(token)
var request = require('request');
var inputdevices;
var inputdevicesstatus;

//// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Start Command  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \\\\

bot.command('start', (ctx) => {
  ctx.reply("به خانه هوشمند خوش آمدید")
    .then(() => ctx.reply('گزینه مورد نظر رو از منو انتخاب کنید', Markup
      .keyboard([
        ['کلید ها', ' سناریو'],
      ])
      .oneTime()
      .resize()
      .extra()
    ))
})

//// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Hears کلید ها  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \\\\

bot.hears('کلید ها', (ctx) => {

  ctx.reply("1")
    .then(() => ctx.reply("2"))
    .then(() => ctx.reply("3"))
    .then(() => ctx.reply("4"))
    .then(() => ctx.reply("5"))
    .then(() => ctx.reply("6"))
    .then(() => ctx.reply("7"))
    .then(() => ctx.reply("8"))
    .then(() => ctx.reply("9"))
    .then(() => ctx.reply("10"))
    var x=[1,2,3,4,5,6,7,8]
for (var key in x) {
  ctx.reply(`x`, Extra.HTML().markup((m) =>
    m.inlineKeyboard([
      m.callbackButton(`A`, `C`),
      m.callbackButton(`B`, `D`)
    ])
  )) .then(() => ctx.reply("*****************"))
}
})
bot.startConversation(
  
)


//// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Action خاموش کلید  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \\\\


bot.action(/خاموش کلید/, (ctx) => {
  //console.log(ctx.match.input)
  var idxnumber = ctx.match.input.substring(ctx.match.input.indexOf('<%>'), ctx.match.input.lastIndexOf('<%>'))
  idxnumber = idxnumber.replace(/<%>/g, '');
  console.log(idxnumber)
  var switchname = ctx.match.input.substring(ctx.match.input.indexOf('<#>'), ctx.match.input.lastIndexOf('<#>'));
  switchname = switchname.replace(/<#>/g, '');
  console.log(switchname)
  request(`http://127.0.0.1:8080/json.htm?type=command&param=switchlight&idx=${idxnumber}&switchcmd=Off`, function (error, response, body) {
    if (error == null) {
      inputdevicesstatus = JSON.parse(body)
      if (inputdevicesstatus.status == "OK") {
        ctx.reply(`کلید ${switchname} خاموش شد`)
      }
      else {
        ctx.reply(`در خاموش شدن ${switchname} اختلال به وجود آمده است`)
      }

    }
    else {
      console.log("ارتباط با دیتابیس برقرار نشد ، لطفا دوباره تلاش کنید");
      ctx.reply("ارتباط با دیتابیس برقرار نشد ، لطفا دوباره تلاش کنید")
    }

  })

})

//////////////////

bot.startPolling()
&#13;
&#13;
&#13;

0 个答案:

没有答案