【问题标题】:Sails.js 1.0 helpers chaining as PromisesSails.js 1.0 助手链作为 Promises
【发布时间】:2017-04-12 09:58:09
【问题描述】:

我是 Sails.js 的新手,我希望使用sails.js 开发一个新应用程序,在这个应用程序中,我想尽快响应 POST 请求,然后使用负载异步。理想情况下,对于我想要在有效负载上执行的任务的每个步骤,我都会有一个助手,并将它们全部异步链接到操作中。我一直在浏览文档,似乎找不到解决方法。

这是解决此问题的正确方法(如果是,您如何/可以将我指向文档)还是有其他方法来处理我忽略的这个问题?

谢谢

【问题讨论】:

    标签: sails.js


    【解决方案1】:

    在 ES6 中,您可以将 helpers 与 async/await 或 Promise 一起使用。

    const temp1 = await sails.helpers.stepone();
    const temp2 = await sails.helpers.steptwo( temp1 );
    let result  = await sails.helpers.stepthree( temp2 );
    // use result here
    

    sails.helpers.stepone
    .then(sails.helpers.steptwo)
    .then(sails.helpers.stepthree)
    .then(result => {
      // use result here
    });
    

    【讨论】:

      【解决方案2】:

      只需将您的服务方法设置为承诺并尽早解决。例如,您可以导入bluebird 来完成此操作。 在您的控制器中:

      myPostEndpoint: (req, res) => {
        return MyProcessorService.initProcessing(req.body).then(res.json);
      }
      

      为您服务MyProcessorService:

      var Promise = import('bluebird');
      //... other init code
      
      module.exports = {
        initProcessing: data => {
          //do some validation...
          // then just resolve and continue
          Promise.resolve({ status: 'processing'});
      
          return MyProcessorService.step1(data)
            .then(MyProcessorService.step2)
            .then(MyProcessorService.step3)//and so on....
        },
        step1: dataFromInit => { 
          //do stuff and resolve for step2  
        },
        step2: dataFromStep1 => { 
          //do stuff and resolve for step3  
        },
        step3: dataFromStep2 => { 
          //do stuff and resolve 
        },
        //and so on
      }
      

      您还可以使用 BullRedis 之类的内容设置工作队列,以将作业发送到 WorkerService 或单独的工作应用程序并在其中运行。

      【讨论】:

      • 我认为@rrforshort 是专门询问助手,而不是旧的服务结构。 sailsjs.com/documentation/concepts/helpers
      • @carpiediem 助手已经是异步的。我当时认为 OP 的意思是一般意义上的“帮助者”,但你可能是对的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多