एक जेक कार्य एक लंबे समय से चलने वाली प्रणाली कमांड निष्पादित करता है। एक और कार्य शुरू करने से पहले पूरी तरह से खत्म होने वाले पहले कार्य पर निर्भर करता है। 'Child_process' का 'exec' फ़ंक्शन सिस्टम कमांड को असीमित रूप से निष्पादित करता है, जिससे पहला कार्य पूरा होने से पहले दूसरे कार्य को शुरू करना संभव हो जाता है।नोड.जेएस और जेक - एक कार्य के भीतर सिंक्रनाइज़ सिस्टम सिस्टम को कैसे कॉल करें?
यह सुनिश्चित करने के लिए जेकफाइल लिखने का सबसे साफ तरीका क्या है कि दूसरे कार्य शुरू होने से पहले पहले कार्य में लंबे समय तक चलने वाला सिस्टम कमांड समाप्त हो जाता है?
मैंने पहले कार्य के अंत में एक डमी लूप में मतदान का उपयोग करने के बारे में सोचा है, लेकिन यह सिर्फ खराब गंध करता है। ऐसा लगता है कि एक बेहतर तरीका होना चाहिए। मैंने this SO question देखा है, लेकिन यह मेरे प्रश्न को काफी संबोधित नहीं करता है।
var exec = require('child_process').exec;
desc('first task');
task('first', [], function(params) {
exec('long running system command');
});
desc('second task');
task('second', ['first'], function(params) {
// do something dependent on the completion of 'first' task
});
क्यों न केवल पहला कार्य सिग्नल उत्सर्जित करता है जब यह किया जाता है, और उस सिग्नल के श्रोता दूसरे कार्य को जन्म देते हैं? – Keith