ÙØªÙØ¶ÙØ Ø§Ø³ØªØ®Ø¯Ø§Ù Ø§ÙØ§Ø³ØªØ±Ø¬Ø§Ø¹Ø§Øª ÙØ§ÙÙØ¹Ùد ÙØ§ÙÙ ÙØ§ÙÙ٠اÙ٠جردة Ø§ÙØ£Ø®Ø±Ù Ø Ø³ÙØ³ØªØ®Ø¯Ù بعض طر٠اÙÙ ØªØµÙØ: عÙÙ ÙØ¬Ù Ø§ÙØªØØ¯Ùد Ø ØªØÙ ÙÙ Ø§ÙØ¨Ø±Ø§Ù ج اÙÙØµÙØ© ÙØ£Ø¯Ø§Ø¡ Ø§ÙØªÙاعب باÙÙ Ø³ØªÙØ¯Ø§Øª Ø§ÙØ¨Ø³Ùطة.
إذا Ù٠تÙ٠عÙÙ Ø¯Ø±Ø§ÙØ© Ø¨ÙØ°Ù Ø§ÙØ·Ø±Ù Ø ÙÙØ§Ù Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ ÙÙ Ø§ÙØ£Ù Ø«ÙØ© ٠ربÙÙØ§ Ø ÙÙØ¯ ترغب ÙÙ ÙØ±Ø§Ø¡Ø© بعض اÙÙØµÙÙ Ù Ù Ø§ÙØ¬Ø²Ø¡ Ø§ÙØªØ§ÙÙ Ù Ù Ø§ÙØ¯Ùرة Ø§ÙØªØ¹ÙÙÙ ÙØ©.
عÙÙ Ø§ÙØ±ØºÙ ٠٠أÙÙØ§ Ø³ÙØØ§ÙÙ ØªÙØ¶ÙØ Ø§ÙØ£Ù ÙØ± عÙÙ Ø£Ù ØØ§Ù. ÙÙ ÙÙÙÙ ÙÙØ§Ù Ø£Ù Ø´ÙØ¡ Ù Ø¹ÙØ¯ باÙÙØ¹Ù Ù٠اÙÙ ØªØµÙØ.
ÙØªÙ تÙÙÙØ± Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙØ¸Ø§Ø¦Ù Ù Ù Ø®ÙØ§Ù Ø¨ÙØ¦Ø§Øª Ø§Ø³ØªØ¶Ø§ÙØ© JavaScript Ø§ÙØªÙ ØªØ³Ù Ø Ù٠بجدÙÙØ© Ø§ÙØ§ØØ¯Ø§Ø« Ø§ÙØºÙر Ù ØªØ²Ø§Ù ÙØ©. بعبارة Ø£Ø®Ø±Ù Ø Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª Ø§ÙØªÙ ÙØ¨Ø¯Ø£Ùا Ø§ÙØ¢Ù Ø ÙÙÙÙØ§ ØªÙØªÙÙ ÙØ§ØÙÙØ§.
عÙ٠سبÙ٠اÙÙ
ثاÙ, داÙÙ ÙØ§ØØ¯Ù Ù
Ø«Ù Ø¯Ø§ÙØ© ا٠setTimeout.
ÙÙØ§Ù Ø£Ù Ø«ÙØ© أخر٠عÙ٠أرض اÙÙØ§Ùع Ù Ù Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª ØºÙØ± اÙÙ ØªØ²Ø§Ù ÙØ© Ø Ù Ø«Ù ØªØÙ ÙÙ Ø§ÙØ¨Ø±Ø§Ù ج اÙÙØµÙØ© ÙØ§ÙÙØØ¯Ø§Øª (Ø³ÙØºØ·ÙÙØ§ Ù٠اÙÙØµÙ٠اÙÙØ§ØÙØ©).
Ø£ÙÙ ÙØ¸Ø±Ø© عÙÙ Ø§ÙØ¯Ø§ÙØ© loadScript(src), ÙØ§Ùت٠تÙÙÙ
بتØÙ
ÙÙ Ø¨Ø±ÙØ§Ù
ج ÙØµÙ Ø¹ÙØ¯ Ø£Ø¹Ø·Ø§Ø¡ÙØ§ Ù
صدر Ø§ÙØ¨Ø±ÙاÙ
ج src:
function loadScript(src) {
// Ø£ÙØ´Ø¦ Ø§ÙØ¹Ùصر <script> Ù ÙÙ
Ø¨Ø£Ø¶Ø§ÙØªÙ اÙÙ Ø§ÙØµÙØØ©
// ÙØ°Ø§ Ø§ÙØ°Ù ÙÙØ¹ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ Ø¹ÙØ¯ أعطاء٠ا٠src ÙÙÙ ÙØ¨Ø¯Ø£ تØÙ
ÙÙ ÙÙ
Ù Ø«Ù
ÙØ´ØºÙ Ø§ÙØ¨Ø±ÙاÙ
ج Ø¹ÙØ¯ Ø§ÙØ§ÙتÙ
اÙ
let script = document.createElement('script');
script.src = src;
document.head.append(script);
}
ÙØªÙ
Ø¥ÙØØ§Ù Ø§ÙÙ
Ø³ØªÙØ¯ Ø§ÙØ¬Ø¯Ùد Ø Ø§ÙØ°Ù تÙ
Ø¥ÙØ´Ø§Ø¤Ù دÙÙØ§Ù
ÙÙÙÙØ§ Ø Ø§ÙØ¹Ùصر <script src="â¦"> ÙØ¹Ø·Ù ÙÙ Ù
صدر Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ src. اÙÙ
ØªØµÙØ بتØÙ
ÙÙ٠تÙÙØ§Ø¦Ùا٠٠ÙÙÙÙ
بتشغÙÙÙ Ø¹ÙØ¯ Ø§ÙØªÙ
Ø§Ù Ø§ÙØªØÙ
ÙÙ.
ÙØÙ ÙØ³ØªØ·Ùع Ø£Ø³ØªØ®Ø¯Ø§Ù ÙØ°Ù Ø§ÙØ¯Ø§ÙØ© Ù٠ا Ù ÙØ¶Ø Ø¨Ø§ÙØ£Ø³ÙÙ:
// تØÙ
ÙÙ ÙØªÙÙÙØ° Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ Ù٠اÙÙ
سار اÙÙ
ØØ¯Ø¯
loadScript('/my/script.js');
ÙØªÙ تÙÙÙØ° Ø§ÙØ¨Ø±Ùا٠ج اÙÙØµÙ âØ¨Ø´ÙÙ ØºÙØ± ٠تزا٠Ùâ Ø ØÙØ« ÙØ¨Ø¯Ø£ Ø§ÙØªØÙ ÙÙ Ø§ÙØ¢Ù Ø ÙÙÙÙ ÙØªÙ تشغÙÙÙ ÙØ§ØÙÙØ§ Ø Ø¹ÙØ¯Ù ا ØªÙØªÙ٠اÙÙØ¸ÙÙØ© باÙÙØ¹Ù.
اذا ÙØ§Ù ÙÙØ§Ù Ø£Ù ÙÙØ¯ أسÙ٠ا٠loadScript(â¦), ÙØ£ÙÙ ÙÙ ÙÙØªØ¸Ø± ØØªÙ Ø£ÙØªÙاء تØÙ
Ù٠اÙÙ
Ù٠اÙÙØµÙ.
loadScript('/my/script.js');
// اÙÙÙØ¯ أسÙ٠ا٠loadScript
// ÙØ§ ÙÙØªØ¸Ø± تØÙ
ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ ØØªÙ ÙÙØªÙÙ
// ...
ÙÙÙØªØ±Ø¶ Ø£ÙÙØ§ Ø¨ØØ§Ø¬Ø© Ø¥ÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù Ø§ÙØ¨Ø±Ùا٠ج اÙÙØµÙ Ø§ÙØ¬Ø¯Ùد ب٠جرد تØÙ ÙÙÙ. تعÙÙ ÙØ¸Ø§Ø¦Ù Ø¬Ø¯ÙØ¯Ø© Ø ÙÙØ±Ùد تشغÙÙÙØ§.
ÙÙÙ٠أذا ÙØ¹ÙÙØ§ ذÙÙ Ù
باشرة٠بعد أستدعاء Ø§ÙØ¯Ø§ÙØ© loadScript(â¦), ÙØ°Ø§ ÙÙ ÙØ¹Ù
Ù:
loadScript('/my/script.js'); // Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ ÙÙ
تÙÙ "function newFunction() {â¦}"
newFunction(); // ÙØ§ ÙÙØ¬Ø¯ Ù
Ø«Ù ÙØ°Ù اÙÙØ¸ÙÙØ©!
Ø¨Ø·Ø¨ÙØ¹Ø© Ø§ÙØØ§Ù Ø Ø±Ø¨Ù
ا ÙÙ
ÙÙÙ ÙØ¯Ù اÙÙ
ØªØµÙØ ÙÙØª ÙØªØÙ
ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ. اعتبارا Ù
Ù Ø§ÙØ¢ÙØ Ø§ÙØ¯Ø§ÙØ© loadScript ÙØ§ تÙÙØ± اÙÙØ¸ÙÙØ© طرÙÙØ© ÙØªØªØ¨Ø¹ Ø¥ÙÙ
Ø§Ù Ø§ÙØªØÙ
ÙÙ. ÙØªÙ
تØÙ
ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ ÙØªØ´ØºÙÙÙ Ù٠اÙÙÙØ§ÙØ© Ø ÙØ°Ø§ ÙÙ Ù
ا ÙÙ Ø§ÙØ£Ù
ر. ÙÙÙÙ ÙÙØ¯ Ø£Ù ÙØ¹Ø±Ù Ù
ØªÙ ÙØØ¯Ø« ذÙÙ Ø ÙØ§Ø³ØªØ®Ø¯Ø§Ù
ÙØ¸Ø§Ø¦Ù ÙÙ
ØªØºÙØ±Ø§Øª Ø¬Ø¯ÙØ¯Ø© Ù
Ù ÙØ°Ø§ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ.
Ø¯Ø¹ÙØ§ ÙØ¶ÙÙ ÙØ¸ÙÙØ© callback ÙÙØ³Ùطة ثاÙÙØ© Ø¥ÙÙloadScript Ø§ÙØªÙ ÙØ¬Ø¨ تÙÙÙØ°Ùا Ø¹ÙØ¯ تØÙ
ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
Ø§ÙØ¢Ù إذا Ø£Ø±Ø¯ÙØ§ استدعاء ÙØ¸Ø§Ø¦Ù Ø¬Ø¯ÙØ¯Ø© Ù Ù Ø§ÙØ¨Ø±Ùا٠ج اÙÙØµÙ Ø ÙØ¬Ø¨ Ø£Ù ÙÙØªØ¨ ذÙÙ Ù٠رد Ø§ÙØ§ØªØµØ§Ù:
loadScript('/my/script.js', function() {
// ÙØ¹Ù
Ù Ø¯Ø§ÙØ© ا٠callback بعد تØÙ
ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ
newFunction(); // ØØªÙ Ø§ÙØ¢Ù ÙØ¹Ù
Ù
...
});
ÙØ°Ù Ù٠اÙÙÙØ±Ø©: اÙÙØ³Ùطة Ø§ÙØ«Ø§ÙÙØ© ÙÙ ÙØ¸ÙÙØ© (عادة ٠ا تÙÙ٠٠جÙÙÙØ© اÙ٠صدر) ÙØªÙ تشغÙÙÙØ§ Ø¹ÙØ¯ Ø§ÙØªÙ Ø§Ù Ø§ÙØ¥Ø¬Ø±Ø§Ø¡.
Ø¥ÙÙÙ Ù Ø«Ø§Ù ÙØ§Ø¨Ù ÙÙØªØ´ØºÙ٠٠ع ÙØµ ØÙÙÙÙ:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', script => {
alert(`Cool, the script ${script.src} is loaded`);
alert( _ ); // Ø¯Ø§ÙØ© Ù
عÙ٠عÙÙØ§ ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ اÙÙ
ØÙ
Ù
});
ÙÙØ°Ø§ Ù
ا ÙØ³Ù
Ù ÙÙ
Ø· âÙØ§Ø¦Ù
عÙÙ Ø§ÙØ§Ø³ØªØ±Ø¬Ø§Ø¹â ÙÙØ¨Ø±Ù
جة ØºÙØ± اÙÙ
تزاÙ
ÙØ©. ÙØ¬Ø¨ أ٠تÙÙØ± Ø§ÙØ¯Ø§ÙØ© Ø§ÙØªÙ ØªÙØ¹Ù Ø´ÙØ¦Ùا بشÙÙ ØºÙØ± Ù
تزاÙ
Ù ÙØ³Ùطة callback ØÙØ« ÙØ¶Ø¹ اÙÙØ¸ÙÙØ© ÙÙØ¯ Ø§ÙØªØ´ØºÙ٠بعد Ø§ÙØªÙ
اÙÙØ§.
ÙÙØ§ ÙØ¹ÙÙØ§ ذÙÙ loadScript, ÙÙÙÙ Ø¨Ø§ÙØ·Ø¨Ø¹ ÙØ°Ø§ ÙÙØ¬ عاÙ
.
Callback ÙÙ callback
ÙÙÙ ÙÙ ÙÙÙØ§ تØÙ ÙÙ ÙØµÙ٠عÙÙ Ø§ÙØªÙاÙÙ: Ø§ÙØ£ÙÙ ÙØ§ÙثاÙÙ Ø¨Ø¹Ø¯ÙØ
Ø§ÙØÙ Ø§ÙØ·Ø¨ÙØ¹Ù Ø£Ù ÙØ¶Ø¹ أستدعاء ا٠loadScript Ø§ÙØ«Ø§ÙÙ Ø¯Ø§Ø®Ù Ø¯Ø§ÙØ© اÙcallback, Ù
Ø«Ù ÙØ°Ø§:
loadScript('/my/script.js', function(script) {
alert(`Cool, the ${script.src} is loaded, let's load one more`);
loadScript('/my/script2.js', function(script) {
alert(`Cool, the second script is loaded`);
});
});
بعد Ø§ÙØªÙ ا٠âloadScriptâ Ø§ÙØ®Ø§Ø±Ø¬Ù Ø ÙØ¨Ø¯Ø£ Ø§ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¡ Ø§ÙØ¯Ø§Ø®ÙÙ.
٠اذا ÙÙ Ø£Ø±Ø¯ÙØ§ Ø§ÙØ«Ø± Ù Ù Ø¨Ø±ÙØ§Ù ج ÙØµÙ آخر â¦Ø
loadScript('/my/script.js', function(script) {
loadScript('/my/script2.js', function(script) {
loadScript('/my/script3.js', function(script) {
// ...استÙ
ر بعد تØÙ
Ù٠جÙ
ÙØ¹ Ø§ÙØ¨Ø±Ø§Ù
ج اÙÙØµÙØ©
});
});
});
ÙØ°Ø§ Ø ÙØ¥Ù ÙÙ Ø¹Ù Ù Ø¬Ø¯ÙØ¯ ÙÙÙÙ Ø¯Ø§Ø®Ù Ø¯Ø§ÙØ© ا٠callback. ÙØ°Ø§ Ø¬ÙØ¯ ÙØ¨Ø¹Ø¶ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª Ø ÙÙÙÙ ÙÙØ³ Ø¬ÙØ¯Ùا ÙÙØ¹Ø¯Ùد Ø ÙØ°ÙÙ Ø³ÙØ±Ù Ù ØªØºÙØ±Ø§Øª Ø£Ø®Ø±Ù ÙØ±ÙØ¨ÙØ§.
Ù Ø¹Ø§ÙØ¬Ø© Ø§ÙØ£Ø®Ø·Ø§Ø¡
ÙÙ Ø§ÙØ£Ù Ø«ÙØ© اÙ٠ذÙÙØ±Ø© Ø£Ø¹ÙØ§Ù ÙÙ ÙØ¹ØªØ¨Ø± Ø§ÙØ£Ø®Ø·Ø§Ø¡. ٠اذا ÙÙ ÙØ´Ù تØÙ ÙÙ Ø§ÙØ¨Ø±Ùا٠ج اÙÙØµÙØ ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ Ø¯Ø§ÙØ© callback Ø§ÙØ®Ø§Øµ Ø¨ÙØ§ ÙØ§Ø¯Ø±Ùا عÙÙ Ø§ÙØ±Ø¯ عÙ٠ذÙÙ.
ÙÙÙ
ا ÙÙÙ ÙØ³Ø®Ø© Ù
ØØ³ÙØ© Ù
Ù loadScript Ø§ÙØ°Ù ÙØªØªØ¨Ø¹ أخطاء Ø§ÙØªØÙ
ÙÙ:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(null, script);
script.onerror = () => callback(new Error(`Script load error for ${src}`));
document.head.append(script);
}
Ø£ÙÙØ§ تستدع٠callback(null, script) ÙÙØªØÙ
Ù٠اÙÙØ§Ø¬Ø ÙØªØ³ØªØ¯Ø¹Ù callback(error) ÙØºÙر ذÙÙ.
Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù :
loadScript('/my/script.js', function(error, script) {
if (error) {
// Ù
Ø¹Ø§ÙØ¬Ø© Ø§ÙØ®Ø·Ø£ ÙÙØ§
} else {
// Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙØµÙ تÙ
تØÙ
ÙÙÙ Ø¨ÙØ¬Ø§Ø
}
});
Ù
ر٠أخرÙ, اÙÙØµÙØ© Ø§ÙØªÙ أستخداÙ
ÙØ§Ùا ÙÙ loadScript ÙÙ Ù٠اÙÙØ§Ùع شائعة جداÙ. ØªÙØ³Ù
٠اÙÙÙ
Ø· âerror-first callbackâ.
Ø§ÙØ§ØªÙاÙÙØ© ÙÙ:
- اÙÙØ³Ùطة Ø§ÙØ£ÙÙÙ ÙÙ
callbackÙ ØØ¬Ùزة ÙØ®Ø·Ø£ إذا ØØ¯Ø«. Ø«Ù ÙØªÙ أستدعاء اÙcallback(err). - اÙÙØ³Ùطة Ø§ÙØ«Ø§ÙÙØ© (ÙÙØ§ØØ¯Ø© اخر٠أذا Ø§ØØªØ§Ø¬Ùا) تÙÙÙ ÙÙÙØªÙجة اÙÙØ§Ø¬ØØ©. Ø«Ù
ÙØªÙ
أستدعاء اÙ
callback(null, result1, result2â¦).
ÙØ°ÙÙ ÙØªÙ
استخداÙ
ÙØ¸ÙÙØ© callback اÙÙØ±Ø¯ÙØ© ÙÙØ¥Ø¨Ùاغ Ø¹Ù Ø§ÙØ£Ø®Ø·Ø§Ø¡ ÙØ¥Ø±Ø¬Ø§Ø¹ اÙÙØªØ§Ø¦Ø¬.
ÙØ±Ù اÙÙ ÙØª
٠٠اÙÙØ¸Ø±Ø© Ø§ÙØ£ÙÙÙ Ø Ø¥ÙÙØ§ طرÙÙØ© ÙØ§Ø¨ÙØ© ÙÙØªØ·Ø¨ÙÙ ÙÙØªØ´ÙÙØ± ØºÙØ± اÙ٠تزا٠Ù. ÙÙÙ ÙØ°Ù٠باÙÙØ¹Ù. باÙÙØ³Ø¨Ø© ÙØ£Ø³ØªØ¯Ø¹Ø§Ø¡ ÙØ§ØØ¯ أ٠رب٠ا أستدعائÙ٠٠تداخÙÙÙÙ Ø ØªØ¨Ø¯Ù Ø¬ÙØ¯Ø©.
ÙÙÙ٠باÙÙØ³Ø¨Ø© Ø¥ÙÙ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª ØºÙØ± اÙÙ ØªØ²Ø§Ù ÙØ© Ø§ÙØªÙ تتبع ÙØ§ØØ¯Ùا تÙÙ Ø§ÙØ¢Ø®Ø± Ø Ø³ÙÙÙÙ ÙØ¯ÙÙØ§ ÙÙØ¯ Ù Ø«Ù ÙØ°Ø§:
loadScript('1.js', function(error, script) {
if (error) {
handleError(error);
} else {
// ...
loadScript('2.js', function(error, script) {
if (error) {
handleError(error);
} else {
// ...
loadScript('3.js', function(error, script) {
if (error) {
handleError(error);
} else {
// ...continue after all scripts are loaded (*)
}
});
}
});
}
});
Ù٠اÙÙÙØ¯ Ø§ÙØ°Ù Ø¨Ø§ÙØ£Ø¹ÙÙ:
- ÙØÙ ÙØÙ
٠اÙ
1.js, أذا ÙÙ ÙÙÙ ÙÙØ§Ù خطأ. - ÙØÙ ÙØÙ
٠اÙ
2.js, أذا ÙÙ ÙÙÙ ÙÙØ§Ù خطأ. - ÙØÙ ÙØÙ
٠اÙ
3.js, أذا ÙÙ ÙÙÙ ÙÙØ§Ù خطأ â Ø£Ùع٠بعض Ø§ÙØ´Ø¦ ØºÙØ±Ù(*).
Ø¹ÙØ¯Ù
ا ØªØµØ¨Ø Ø§ÙØ£Ø³ØªØ¯Ø¹Ø§Ø¡Ø§Øª Ø£ÙØ«Ø± تداخÙÙØ§ Ø ØªØµØ¨Ø Ø§ÙØ´Ùرة أعÙ
Ù ÙØªØ²Ø¯Ø§Ø¯ ØµØ¹ÙØ¨Ø© Ø¥Ø¯Ø§Ø±ØªÙØ§ Ø Ø®Ø§ØµØ© إذا ÙØ§Ù ÙØ¯ÙÙØ§ رÙ
ز ØÙÙÙÙ Ø¨Ø¯ÙØ§Ù Ù
Ù ... ÙØ¯ ÙØªØ¶Ù
٠اÙÙ
Ø²ÙØ¯ Ù
Ù Ø§ÙØÙÙØ§Øª Ø ÙØ§Ùعبارات Ø§ÙØ´Ø±Ø·ÙØ© ÙÙ
ا Ø¥Ù٠ذÙÙ.
ÙÙØ°Ø§ ٠ا ÙÙØ·Ù٠عÙÙ٠أØÙاÙÙØ§ âØ£Ø³ØªØ±Ø¬Ø§Ø¹ Ø§ÙØ¬ØÙÙ â Ø£Ù âÙØ±Ù اÙÙ ÙØªâ.
ÙÙÙ Ù âÙØ±Ù â Ø§Ùأستدعاءات اÙÙ ØªØ¯Ø§Ø®ÙØ© Ø¥Ù٠اÙÙÙ Ù٠٠ع Ù٠إجراء ØºÙØ± ٠تزا٠Ù. سرعا٠٠ا ÙØ®Ø±Ø¬ Ø¹Ù Ø§ÙØ³Ùطرة.
ÙØ°Ø§ ÙØ¥Ù طرÙÙØ© ÙØªØ§Ø¨Ø© اÙÙÙØ¯ ÙØ°Ù ÙÙØ³Øª Ø¬ÙØ¯Ø© Ø¬Ø¯ÙØ§.
ÙÙ ÙÙÙØ§ Ù ØØ§ÙÙØ© Ø§ÙØªØ®ÙÙ٠٠٠اÙÙ Ø´ÙÙØ© ع٠طرÙ٠جع٠ÙÙ Ø¹Ù Ù ÙØ¸ÙÙØ© ÙØ§Ø¦Ù Ø© Ø¨Ø°Ø§ØªÙØ§ Ø Ù Ø«Ù ÙØ°Ø§:
loadScript('1.js', step1);
function step1(error, script) {
if (error) {
handleError(error);
} else {
// ...
loadScript('2.js', step2);
}
}
function step2(error, script) {
if (error) {
handleError(error);
} else {
// ...
loadScript('3.js', step3);
}
}
function step3(error, script) {
if (error) {
handleError(error);
} else {
// ...ÙØªÙ
تÙÙÙØ° Ø§ÙØ§ÙÙØ§Ø¯ ÙÙØ§ بعد تØÙ
ÙÙ Ù٠اÙÙ
ÙÙØ§Øª (*)
}
}
ÙØ±ÙØ Ø¥ÙÙ ÙÙØ¹Ù ÙÙØ³ Ø§ÙØ´ÙØ¡ Ø ÙÙØ§ ÙÙØ¬Ø¯ تداخ٠ع٠ÙÙ Ø§ÙØ¢Ù ÙØ£ÙÙØ§ جعÙÙØ§ Ù٠إجراء ÙØ¸ÙÙØ© Ù ÙÙØµÙØ© ٠٠اÙ٠ستÙÙ Ø§ÙØ£Ø¹ÙÙ.
Ø¥ÙÙ ÙØ¹Ù Ù Ø ÙÙÙ Ø§ÙØ±Ù ز ÙØ¨Ø¯Ù ÙÙØ£Ù٠جدÙÙ Ø¨ÙØ§Ùات ٠٠زÙ. Ù Ù Ø§ÙØµØ¹Ø¨ ÙØ±Ø§Ø¡ØªÙا Ø ÙØ±Ø¨Ù ا ÙØ§ØØ¸Øª أ٠اÙ٠رء ÙØØªØ§Ø¬ Ø¥Ù٠اÙÙÙØ² بÙ٠اÙÙØ·Ø¹ Ø£Ø«ÙØ§Ø¡ ÙØ±Ø§Ø¡ØªÙا. ÙØ°Ø§ ØºÙØ± Ù Ø±ÙØ Ø Ø®Ø§ØµØ© إذا ÙÙ ÙÙ٠اÙÙØ§Ø±Ø¦ عÙÙ Ø¯Ø±Ø§ÙØ© باÙÙÙØ¯ ÙÙØ§ ÙØ¹Ø±Ù Ø£ÙÙ ÙÙÙØ².
Ø£ÙØ¶Ø§Ù, Ø§ÙØ¯ÙØ§Ù Ø§ÙØªÙ تÙ
تسÙ
ÙØªÙا step* ÙÙÙØ§ تستخدÙ
عÙÙ ØØ¯Ù, ÙØªÙ
Ø¥ÙØ´Ø§Ø¤Ùا ÙÙØ· ÙØªØ¬Ùب âÙØ±Ù
اÙÙ
ÙØªâ. ÙØ§ Ø£ØØ¯ Ø³ÙØ¹Ùد استخداÙ
ÙØ§ خارج Ø³ÙØ³ÙØ© Ø§ÙØ¹Ù
Ù. ÙØ°ÙÙ ÙÙØ§Ù اÙÙÙÙÙ Ù
Ù ÙÙØ¶Ù Ù
Ø³Ø§ØØ© Ø§ÙØ§Ø³Ù
ÙÙØ§.
ÙÙØ¯ Ø§ÙØØµÙ٠عÙÙ Ø´ÙØ¡ Ø£ÙØ¶Ù.
ÙØØ³Ù Ø§ÙØØ¸ Ø ÙÙØ§Ù Ø·Ø±Ù Ø£Ø®Ø±Ù ÙØªØ¬Ùب Ù Ø«Ù ÙØ°Ù Ø§ÙØ£Ùرا٠ات. Ø£ØØ¯ Ø£ÙØ¶Ù Ø§ÙØ·Ø±Ù Ù٠استخدا٠âpromisesâ Ø§ÙÙ ÙØ¶ØØ© Ù٠اÙÙØµÙ Ø§ÙØªØ§ÙÙ.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)