Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我想在nodejs中按顺序以同步方式执行下面的代码_Node.js - Fatal编程技术网

Node.js 我想在nodejs中按顺序以同步方式执行下面的代码

Node.js 我想在nodejs中按顺序以同步方式执行下面的代码,node.js,Node.js,以上代码以异步顺序工作 异步顺序: 1.芬顿女士 2.ms.Delete 3.MS.Update 4.quickmslogs.Create 这是一个异步工作,我想工作的顺序,这个函数 如何以同步的方式实现这一点?帮帮我 异步任务的用途是什么?在nodejs,我是一个新手!帮助我。您可以通过使用异步等待操作来完成此操作。尝试运行下面的代码 var job = new cronJob('* * * * * *', function () { //find and send message u

以上代码以异步顺序工作 异步顺序:

1.芬顿女士

2.ms.Delete

3.MS.Update

4.quickmslogs.Create

这是一个异步工作,我想工作的顺序,这个函数

如何以同步的方式实现这一点?帮帮我


异步任务的用途是什么?在nodejs,我是一个新手!帮助我。

您可以通过使用异步等待操作来完成此操作。尝试运行下面的代码

var job = new cronJob('* * * * * *', function () {
    //find and send message using cron job

    Quicksms.findOne({
        attributes: ['id', 'phoneno', 'sender', 'message', 'isSent'],
        raw: true
    }).then(data => {
        console.log('data:', data);
        // var filteredData = datas.filter(data => data.isSent === 0);
        // console.log('filteredData:', filteredData);
        // for (var i = 0; i < data.length; i++) {
        // if (data.isSent === 0) {
        var uri = '/api/user=test&password=test&sender=' +
            data.sender + '&SMSText=' + data.message + '&GSM=' + data.phoneno;
        var sms = encodeURI(uri);
        var options = {
            host: 'test.com',
            port: 80,
            path: sms,
            method: 'GET'
        };
        http.request(options, function (res) {
            console.log('STATUS: ' + res.statusCode);
            console.log('HEADERS: ' + JSON.stringify(res.headers));
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log('BODY: ' + chunk);
            });
        }).end();


        //update into 1 true:
        Quicksms.update({
            isSent: 'true'
        }, {
            where: {
                id: data.id
            }
        })
        // }
        //  }


        //store in log
        QuicksmsLog.create({
            phoneno: data.phoneno,
            sender: data.sender,
            message: data.message,
            isSent: data.isSent
        }).then(function (data) {
            if (data) {
                console.log("successfully stored in log");
            } else {
                console.log("failed");
            }
        })


        //destroy message after sending
        Quicksms.destroy({
            where: {
                isSent: 1
            }
        }).then(delData => {
            console.log('cronJob deleted successfully.', delData);
        });
    });
}, function () {
    console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');

您可以通过使用异步等待操作来实现这一点。尝试运行下面的代码

var job = new cronJob('* * * * * *', function () {
    //find and send message using cron job

    Quicksms.findOne({
        attributes: ['id', 'phoneno', 'sender', 'message', 'isSent'],
        raw: true
    }).then(data => {
        console.log('data:', data);
        // var filteredData = datas.filter(data => data.isSent === 0);
        // console.log('filteredData:', filteredData);
        // for (var i = 0; i < data.length; i++) {
        // if (data.isSent === 0) {
        var uri = '/api/user=test&password=test&sender=' +
            data.sender + '&SMSText=' + data.message + '&GSM=' + data.phoneno;
        var sms = encodeURI(uri);
        var options = {
            host: 'test.com',
            port: 80,
            path: sms,
            method: 'GET'
        };
        http.request(options, function (res) {
            console.log('STATUS: ' + res.statusCode);
            console.log('HEADERS: ' + JSON.stringify(res.headers));
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log('BODY: ' + chunk);
            });
        }).end();


        //update into 1 true:
        Quicksms.update({
            isSent: 'true'
        }, {
            where: {
                id: data.id
            }
        })
        // }
        //  }


        //store in log
        QuicksmsLog.create({
            phoneno: data.phoneno,
            sender: data.sender,
            message: data.message,
            isSent: data.isSent
        }).then(function (data) {
            if (data) {
                console.log("successfully stored in log");
            } else {
                console.log("failed");
            }
        })


        //destroy message after sending
        Quicksms.destroy({
            where: {
                isSent: 1
            }
        }).then(delData => {
            console.log('cronJob deleted successfully.', delData);
        });
    });
}, function () {
    console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');

使用Promise实现同步过程有多种方法。看起来上面这些方法都是实例,我假设它们是实例。按照传统方式,您可以使用多个promise实例创建一个promise。我将在下面制作一个示例代码,这样您就可以看到它是如何工作的。此外,如果您熟悉ES7语法,也可以使用。但是,由于您是node.js的新手,我将为前一种方法留下答案。检查下面。希望这对你有帮助

var job = new cronJob('* * * * * *', async function () {
    //find and send message using cron job

    await Quicksms.findOne({
        attributes: ['id', 'phoneno', 'sender', 'message', 'isSent'],
        raw: true
    }).then(data => {
        console.log('data:', data);
        // var filteredData = datas.filter(data => data.isSent === 0);
        // console.log('filteredData:', filteredData);
        // for (var i = 0; i < data.length; i++) {
        // if (data.isSent === 0) {
        var uri = '/api/user=test&password=test&sender=' +
            data.sender + '&SMSText=' + data.message + '&GSM=' + data.phoneno;
        var sms = encodeURI(uri);
        var options = {
            host: 'test.com',
            port: 80,
            path: sms,
            method: 'GET'
        };
        http.request(options, function (res) {
            console.log('STATUS: ' + res.statusCode);
            console.log('HEADERS: ' + JSON.stringify(res.headers));
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log('BODY: ' + chunk);
            });
        }).end();


        //update into 1 true:
        await Quicksms.update({
            isSent: 'true'
        }, {
            where: {
                id: data.id
            }
        })
        // }
        //  }


        //store in log
        await QuicksmsLog.create({
            phoneno: data.phoneno,
            sender: data.sender,
            message: data.message,
            isSent: data.isSent
        }).then(function (data) {
            if (data) {
                console.log("successfully stored in log");
            } else {
                console.log("failed");
            }
        })


        //destroy message after sending
        await Quicksms.destroy({
            where: {
                isSent: 1
            }
        }).then(delData => {
            console.log('cronJob deleted successfully.', delData);
        });
    });
}, function () {
    console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');

使用Promise实现同步过程有多种方法。看起来上面这些方法都是实例,我假设它们是实例。按照传统方式,您可以使用多个promise实例创建一个promise。我将在下面制作一个示例代码,这样您就可以看到它是如何工作的。此外,如果您熟悉ES7语法,也可以使用。但是,由于您是node.js的新手,我将为前一种方法留下答案。检查下面。希望这对你有帮助

var job = new cronJob('* * * * * *', async function () {
    //find and send message using cron job

    await Quicksms.findOne({
        attributes: ['id', 'phoneno', 'sender', 'message', 'isSent'],
        raw: true
    }).then(data => {
        console.log('data:', data);
        // var filteredData = datas.filter(data => data.isSent === 0);
        // console.log('filteredData:', filteredData);
        // for (var i = 0; i < data.length; i++) {
        // if (data.isSent === 0) {
        var uri = '/api/user=test&password=test&sender=' +
            data.sender + '&SMSText=' + data.message + '&GSM=' + data.phoneno;
        var sms = encodeURI(uri);
        var options = {
            host: 'test.com',
            port: 80,
            path: sms,
            method: 'GET'
        };
        http.request(options, function (res) {
            console.log('STATUS: ' + res.statusCode);
            console.log('HEADERS: ' + JSON.stringify(res.headers));
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log('BODY: ' + chunk);
            });
        }).end();


        //update into 1 true:
        await Quicksms.update({
            isSent: 'true'
        }, {
            where: {
                id: data.id
            }
        })
        // }
        //  }


        //store in log
        await QuicksmsLog.create({
            phoneno: data.phoneno,
            sender: data.sender,
            message: data.message,
            isSent: data.isSent
        }).then(function (data) {
            if (data) {
                console.log("successfully stored in log");
            } else {
                console.log("failed");
            }
        })


        //destroy message after sending
        await Quicksms.destroy({
            where: {
                isSent: 1
            }
        }).then(delData => {
            console.log('cronJob deleted successfully.', delData);
        });
    });
}, function () {
    console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');

你能帮我贴一些答案吗?我不知道怎么做,我是个新手!你能帮我贴一些答案吗?我不知道怎么做,我是个新手!看起来不错@PavanLooks不错@帕万