【问题标题】:How to set nodejs to work synchronously?如何设置nodejs同步工作?
【发布时间】:2018-05-25 03:15:11
【问题描述】:
var job = new cronJob('* * * * * *', function () {
    Draft.find().then(data => {
        var finalData = data;
        finalData.forEach(function(item2) {
            if (item2.scheduledTime === 'now') {
                finalData.forEach(function (item) {
                    var psms = {
                        phoneno: item.senderdata,
                        sender: item.senderName,
                        message: item.message
                    }
                    var obj = psms;
                    var finalpostsms = obj.phoneno.split("\n").map(s => ({ ...obj,
                        phoneno: +s
                    }));
                    Profsms.bulkCreate(finalpostsms).then(function (data) {
                        if (data) {
                            console.log("successfully moved in profsms mysql");

                        } else {
                            console.log("failed");
                        }
                    })
                });
            } else {
                console.log('Better you be in drafts..manual input');
            }
            //delete from draft
            if (item2.scheduledTime === 'now') {
                Draft.findOneAndRemove({
                    _id: item2._id
                }, function (err, employee) {
                    if (err)
                        console.log('err');
                    console.log('Successfully deleted from draft');
                });
            } else {
                console.log('You cant delete from drafts hahaha because no sendnow statement');
            }
        });
    });
}, function () {
    console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');

上面的代码,异步工作。

我希望上面的代码能够同步工作,需要一些答案。我是JS开发的新手

是否可以使用异步等待?我不知道如何编写异步等待代码。

【问题讨论】:

  • 您正在寻找文档。
  • 你会发布答案吗?将上面的代码同步工作,这对我来说非常有用:)
  • async/await 不会神奇地将您的代码转换为同步代码。他们仍然在幕后使用承诺。
  • 什么是同步,什么是异步?什么是承诺?你研究过吗?你在问这里之前有没有试过 1 小时?我会回答你的问题,是的,你可以做异步/等待,但你应该尝试更多。

标签: mysql json node.js mongodb asynchronous


【解决方案1】:

你的回调应该是

async function(){
   let data = await Draft.find();
   ...process data;
}

【讨论】:

  • 它在参数“async function()”附近显示语法错误你能编辑我的问题代码,并发布完整的答案这将非常有帮助:)
  • @MohamedSameer:你需要运行支持async的Node版本。
  • @MohamedSameer:我们不会为您编写函数。你需要学习如何编写代码。
  • 如果一旦我得到答案,我可以了解这个概念,然后我可以继续学习编写代码,我想提交 tomoro,这就是我要求编辑我的代码的原因,真的如果您发布答案对我有帮助
【解决方案2】:

这是一个异步等待示例代码,您可以根据需要进行修改。但首先你需要使用支持异步语法的 Node。我相信 node 8 LTS 已经有了 async/await 功能。

function get() {
 // your db code block
 return Promise.resolve(7);
}

async function main() {
  const r = await get();
  console.log(r);
}

main();

【讨论】:

  • 你使用什么节点版本?您是否尝试过此示例代码并在终端中运行它?
  • 是的,我有 8.9.1 它的工作,但我上面的代码不工作
  • 您需要详细说明什么不起作用。为了简化检查,您可能需要使用简单的代码块async function processPromise() { const finalData = await Draft.find(); console.log('db result', finalData); // do another process console.log('process finished'); } new CronJob('* * * * * *', processPromise, null, true, 'America/Los_Angeles'); 进行测试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2019-08-31
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2015-04-12
相关资源
最近更新 更多