في Node.js، عند التعامل مع ردود الاتصال غير المتزامنة، من الضروري فهم طبيعة النظام الأساسي غير المحظورة . تتناول هذه المقالة تحديًا شائعًا: كيفية جعل الوظيفة تنتظر اكتمال رد الاتصال.
فكر في الوظيفة المبسطة التالية:
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
الهدف هو الاتصال بـ myApi.exec وإرجاع الاستجابة المستلمة في رد الاتصال. ومع ذلك، يعود هذا الرمز على الفور، مما يجعله غير فعال.
تفرض بنية Node.js المبنية على الأحداث أن الطريقة "الجيدة" للتعامل مع عمليات الاسترجاعات غير المتزامنة هي ليس للانتظار. بدلاً من ذلك، يجب أن تقبل الوظائف معلمة رد الاتصال التي سيتم استدعاؤها عند اكتمال العملية. يجب ألا يتوقع المتصل قيمة "إرجاع" تقليدية، بل يجب أن يقدم رد اتصال لمعالجة النتيجة.
function(query, callback) {
myApi.exec('SomeCommand', function(response) {
// additional processing...
callback(response); // This "returns" the value to the caller
});
}
الاستخدام:
myFunction(query, function(returnValue) {
// Use the return value here
});
في هذا الأسلوب، لا يتم حظر الوظيفة وتسمح لحلقة الحدث بمواصلة معالجة المهام الأخرى. عند استدعاء رد الاتصال، تقوم الوظيفة المتوفرة بمعالجة النتيجة بشكل غير متزامن.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3