"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التعامل مع إكمال رد الاتصال غير المتزامن في Node.js؟

كيفية التعامل مع إكمال رد الاتصال غير المتزامن في Node.js؟

تم النشر بتاريخ 2024-11-03
تصفح:102

How to Handle Asynchronous Callback Completion in Node.js?

التعامل مع ردود الاتصال غير المتزامنة في Node.js

في 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
});

في هذا الأسلوب، لا يتم حظر الوظيفة وتسمح لحلقة الحدث بمواصلة معالجة المهام الأخرى. عند استدعاء رد الاتصال، تقوم الوظيفة المتوفرة بمعالجة النتيجة بشكل غير متزامن.

بيان الافراج أعيد طبع هذه المقالة على الرقم: 1729504094 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3