उदाहरण पर विचार करें: मेरे पास निम्नलिखित express.js
ऐप है (नीचे कोड स्निपेट देखें)। मैं पूरे एप जीवनकाल के दौरान डीबी के साथ एक लगातार कनेक्शन रखना चाहता हूं, और अपनी सेवा के लिए एक लगातार कनेक्शन (जिसे एसिंक कॉल शुरू करने की आवश्यकता है)। और कुछ प्रविष्टि बिंदु हैं, यानी कोई भी मेरे प्रोटोकॉल के माध्यम से न केवल मेरे ऐप तक पहुंच सकता है। बेशक, मैं सेवा प्रारंभिक कोड डुप्लिकेशन से बचना चाहता हूं और ऐसी कई एसिंक-प्रारंभिक सेवाएं हो सकती हैं।express.js (या समान) ऐप्स के असीमित प्रारंभिक
/* app.js */
var app = require('express')();
// set views, use routes, etc.
var db = require('monk/mongoose/etc')(...); // happily, usually it's a sync operation
var myService = require('./myService'); // however, it's possible to have several such services
myService.init(function(err, result) {
// only here an initialization process is finished!
});
module.exports.app = app;
/* http_server.js (www entry point) */
var app = require('app');
// create an HTTP server with this app and start listening
/* telnet_server.js (other entry point) */
var app = require('app');
// create a Telnet server with this app and start listening
ऊपर कोड स्निपेट में, समय http (या टेलनेट, या किसी अन्य) सर्वर शुरू कर रहा है द्वारा, वहाँ कोई गारंटी नहीं है, कि myService
पहले से ही प्रारंभ हो जाता है।
तो, मुझे किसी भी तरह से अपने ऐप निर्माण कोड को पुनर्गठित करना होगा। अभी के लिए मैं अगले समाधान के साथ चिपके रहते हैं:
/* app.js */
var app = require('express')();
module.exports.app = app;
module.exports.init = function(callback) {
var myService = require('./myService');
myService.init(callback);
}
/* entry_point.js */
var app = require('app');
app.init(function(err) {
if (!err) {
// create an HTTP/Telnet/etc server and start listening
}
});
तो, मेरे सवाल यह है: आम तरीका आवश्यक अतुल्यकालिक कॉल प्रारंभ करने सेवाओं प्रारंभ करने में क्या है?
यह वास्तव में ऑपरेशन के किसी भी एसिंक सेट को क्रमबद्ध करने से अलग नहीं है। यदि आप उन्हें एक विशिष्ट क्रम में करना चाहते हैं, तो आप चेन वादे करते हैं या आप पहले एसिंक ऑपरेशन के समापन कॉलबैक में दूसरा ऑपरेशन करते हैं। यदि आपके पास एन स्वतंत्र एसिंक ऑपरेशंस हैं जो आपको कुछ और करने से पहले किया जाना चाहिए, तो वादे और 'Promise.all() 'का उपयोग करें। एक सर्वर बनाम एकाधिक एसिंक संचालन के किसी अन्य समन्वय को शुरू करने के लिए कोई अलग नहीं है। – jfriend00