2017-04-12 1 views
0

Ich bin neu bei Sails.js und ich möchte eine neue Anwendung mit sail.js entwickeln und in dieser Anwendung möchte ich so schnell wie möglich auf eine POST-Anfrage antworten , dann eine Reihe von Aufgaben mit den Nutzdaten asynchron behandeln. Idealerweise würde ich für jeden Schritt der Aufgaben, die ich an der Nutzlast ausführen möchte, einen Helfer haben und sie alle asynchron in der Aktion verketten. Ich habe die Dokumente durchforstet und finde keinen Weg, dies zu tun.Sails.js 1.0 Helfer verketten als Promises

Ist dies der richtige Weg, um dieses Problem anzugehen (wenn ja wie/können Sie mich auf Dokumente verweisen) oder gibt es alternative Möglichkeiten, dieses Problem, das ich übersehen habe, zu behandeln?

Dank

Antwort

0

Sie Ihre Service-Methoden wie Versprechungen aufgebaut und früh lösen. Dazu können Sie beispielsweise bluebird importieren. In Ihrem Controller:

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

Und in Ihrem Service 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 
} 

Sie könnten auch einen Arbeiter Warteschlange mit so etwas wie Bull und Redis loszuschicken Jobs und laufen in einem WorkerService einrichten oder separate Worker-App