首页 > 解决方案 > 执行代码行的Javascript顺序

问题描述

我正在做一个在 Raspberry Pi 3 中实现的 Telegram Bot。所以我的第一个想法是使用带有 Node.js 的“telegraf”并在那里执行 BOT 的代码,但也使用“shell.js”我想运行一些树莓终端上的命令。问题是我希望 BOT 中的代码等到文件被下载然后程序继续......

这里的问题是程序做了一些不按出现顺序的事情。

    var shell = require('shelljs')

    const download = (ctx) => {
            ctx.reply('Downloading...')

            shell.exec('sudo bash script_Download.sh ' + ctx.command.args[0])
            while(shell.exec('ps -ef | grep wget | grep -v grep')!=''){}
            ctx.reply('Downloaded.')

            ctx.reply('Uploading the file to Google Drive...')
            shell.exec('mv ~/Super_Secret_File /mnt/gdrive/TRBDownloads')     
    }
module.exports = download

在此特定代码中,我想程序编写“正在下载...”,然后启动 script_Download并暂停程序,直到命令 wget 完成(在script_Downlaod内)这部分是通过以下方式完成的:while(shell.exec('ps -ef | grep wget | grep -v grep')!=''){}。但返回类似于“未找到文件”(这意味着 wget 没有完成),然后在 Telegram 聊天中写入“正在下载”和“正在将文件上传到 Google Drive...”。

所以,我想知道如何使这部分代码按顺序执行:首先编写下载,执行脚本,等到它完成然后编写上传......对不起,我不太了解Javascript所以我现在的知识是基本的

标签: javascriptnode.jsraspberry-pi3telegramshelljs

解决方案


推荐阅读