मुझे समझ नहीं आता क्यों client.smembers
और client.get
(रेडिस लुकअप) को केवल कथन होने के बजाय कॉलबैक होना चाहिए - यह जीवन को बहुत जटिल बना देता है।
नोड यही है। (मुझे पूरा यकीन है कि इस विषय पर यहां पर्याप्त से अधिक बार चर्चा की गई थी, अन्य प्रश्नों को देखें, यह निश्चित रूप से है)
<ब्लॉकक्वॉट>
मैं कैसे सुनिश्चित कर सकता हूं कि socket.broadcast
. पर कॉल करने से पहले सभी लुकअप किए गए हैं ?
यही है err
कॉलबैक फ़ंक्शन के लिए। यह थोड़े नोड का मानक है - कॉलबैक में पहला पैरामीटर त्रुटि वस्तु है (null
अगर सब कुछ ठीक है)। तो बस कुछ इस तरह का उपयोग करें ताकि सुनिश्चित हो सके कि कोई त्रुटि नहीं हुई है:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
<ब्लॉकक्वॉट> लेकिन यह बहुत गन्दा लगता है।
आपको इसकी आदत हो जाएगी। मुझे वास्तव में यह अच्छा लगता है, जब कोड अच्छी तरह से स्वरूपित होता है और परियोजना चतुराई से संरचित होती है।
अन्य तरीके हैं:
- async कोड-प्रवाह (Async.js, Step.js, आदि) को नियंत्रित करने के लिए पुस्तकालयों का उपयोग करना
- यदि स्पेगेटी-शैली कोड वह है जो आपको लगता है कि गड़बड़ है, तो परिणामों को संसाधित करने के लिए कुछ फ़ंक्शन को परिभाषित करें और उन्हें अनाम के बजाय पैरामीटर के रूप में पास करें।