English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS Basic Tutorial

NodeJS Express.js

NodeJS Buffer&URL;

NodeJS MySql

NodeJS MongoDB

NodeJS file (FS)

NodeJS other

وظائف الوراء في Node.js

دالة التراجع في Node.js: Asynchronism is one of the basic factors that make Node.js popular. Callback is the implementation of function asynchronism. Generally, in Node.js, most functions that handle resources have a callback variant.

When a resource is called for an asynchronous function for a task, the control will immediately continue to execute the subsequent statements after the function. The task on the resource will start in parallel. This can help Node.js continues to perform other tasks while the function is using the resource. Once the task using the resource is completed, Node.js will use the callback function to resume. Call دالة التراجع تأتي بمعامل: كائن البيانات، كائن النتيجة، و(أو) كائن الخطأ الذي يحتوي على معلومات تتعلق بالمهمة.

دوال الحظر:على عكس الدوال التراجعية، تُنفيذ الدوال المتزامنة يحتوي على الكتلة حتى يتمكن من اكتمال الموارد، لذا تُسمى أيضًا دوال الحظر.

دالة التراجع المدمجة في Node.js إذا كانت هناك عدة عمليات تنفيذ على الموارد بشكل متتابع وكانت بحاجة إلى تنفيذ غير متزامن، يمكن دمج الدوال التراجعية معًا.

الآن، عند قراءة (المهمة) ملف (المورد) سنرى ثلاثة حالات مقارنة بين الدوال التراجعية والدوال الحظر.

  • نموذج دالة الحظر في Node.js

  • نموذج دالة التراجع في Node.js

  • مثال على وظائف الاستدعاء المتداخلة في Node.js

نموذج دالة الحظر

فيما يلي نموذج سكربت Node.js، والذي يقرأ ملف sample.txt بشكل متزامن.

 var fs = require('fs'); 
 
// قراءة ملف sample.txt
var data = fs.readFileSync('sample.txt'); 
console.log("اكتمال قراءة الملف: " + new Date().toISOString()); 
 
console.log("After readFileSync statement: " + new Date().toISOString());

عند تشغيل البرنامج المذكور أعلاه

إخراج الت终端

 arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-sync.js 
Reading file completed: 2017-10-19T12:21:40.103Z
After readFileSync statement: 2017-10-19T12:21:40.105Z

بعد تنفيذ جملة readFileSync دائمًا ما يتم تنفيذ التراجع بعد اكتمال قراءة الملف. fs.readFileSync يمنع تدفق التنفيذ.

نموذج دالة التراجع في Node.js

فيما يلي نموذج سكربت Node.js، والذي يستخدمدالة التراجع في Node.jsقراءة ملف sample.txt بشكل غير متزامن.

 var fs = require('fs'); 
 
// قراءة ملف sample.txt
fs.readFile('sample.txt', 
    // الدالة التراجعية التي تُدعى عند اكتمال قراءة الملف
    function(err, data) {  
        if (err) throw err; 
        // البيانات هي منطقة التخزين التي تحتوي على محتويات الملف
        console.log("اكتمال قراءة الملف: " + new Date().toISOString()); 
 }); 
 
console.log("بعد قراءة الملف بشكل غير متزامن: " + new Date().toISOString());

عند تشغيل البرنامج المذكور أعلاه

إخراج الت终端

arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-async.js 
بعد تنفيذ readFile بشكل متسلسل: 2017-10-19T12:25:36.982Z
تم إكمال قراءة الملف: 2017-10-19T12:25:36.987Z

قد تلاحظ أن حتى بعد تنفيذ console.log في جملة الاستدعاء المُتتابع readFile، يتطلب تنفيذ قراءة الملف حوالي 5 ميللي ثانية. لا تقوم جملة file. fs.readFile('sample.txt', callback function{..}) بإيقاف التنفيذ، بل تبدأ عملية جديدة في تدفق التحكم الرئيسي، لقراءة الملف (لتنفيذ المهام على الموارد).

مثال على وظائف الاستدعاء المتداخلة في Node.js

لإظهار وظائف الاستدعاء المتداخلة في Node.js، سنفكر في خطة لتسمية الملف وإزالته باستخدام وظائف الاستدعاء المُتتابعة.

 var fs = require('fs'); 
 
fs.rename('sample.txt', 'sample_old.txt', 
    // وظيفة الاستدعاء الأولى
    function (err) { 
        if (err) throw err; 
        console.log('تم تسمية الملف.'); 
        fs.unlink('sample_old.txt', 
            // وظيفة الاستدعاء الثانية
            function (err) { 
                if (err) throw err; 
                console.log('تم حذف الملف.'); 
            } 
        );  
    } 
 );

عند تشغيل مثال Node.js المذكور أعلاه مع node

إخراج الت终端

 arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-nested-callback.js 
تم تسمية الملف. 
تم حذف الملف.

الخاتمة:

في هذا الدليل Node.js – وظائف الاستدعاء في Node.js، تعلمنا عملية تنفيذ وظائف الاستدعاء وكيف تحقق من التشغيل غير المُحبوس، وكيف يمكن دمج وظائف الاستدعاء المتداخلة مع الأمثلة.