الفرق بين المراجعتين لصفحة: «JavaScript/Promise/resolve»
جميل-بيلوني (نقاش | مساهمات) إنشاء الصفحة. هذه الصفحة من مساهمات عبد اللطيف ايمش |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الدالة <code>Promise.resolve()</code>}}</noinclude> | <noinclude>{{DISPLAYTITLE:الدالة <code>Promise.resolve()</code> في JavaScript}}</noinclude> | ||
الدالة <code>Promise.resolve(value)</code> ستُعيد كائن <code>[[JavaScript/Promise|Promise]]</code> الذي قُبِل (resolved) مع القيمة <code>value</code> المُحدَّدة. إذا كانت القيمة هي وعدٌ، فسيُعاد ذاك الوعد. وإذا كانت القيمة تمتلك استدعاءً للدالة | الدالة <code>Promise.resolve(value)</code> ستُعيد كائن <code>[[JavaScript/Promise|Promise]]</code> الذي قُبِل (resolved) مع القيمة <code>value</code> المُحدَّدة. إذا كانت القيمة هي وعدٌ، فسيُعاد ذاك الوعد. وإذا كانت القيمة تمتلك استدعاءً للدالة [[JavaScript/Promise/then|<code>()then</code>]]، «فسيتبع» الوعد المُعاد ذاك الاستدعاء، وسيُعيد حالته النهائية؛ وفيما عدا ذلك من الحالات، سيتم تحقيق الوعد مع القيمة المعطية.<syntaxhighlight lang="javascript"> | ||
var promise1 = Promise.resolve([1, 2, 3]); | var promise1 = Promise.resolve([1, 2, 3]); | ||
سطر 19: | سطر 19: | ||
=== <code>value</code> === | === <code>value</code> === | ||
الوسيط الذي سيُقبل مع هذا الوعد، ويمكن أن يكون كائن <code>[[JavaScript/Promise|Promise]]</code> أو كائن <code>[[JavaScript/Promise|Promise]]</code> مع استدعاء <code>[[JavaScript/Promise | الوسيط الذي سيُقبل مع هذا الوعد، ويمكن أن يكون كائن <code>[[JavaScript/Promise|Promise]]</code> أو كائن <code>[[JavaScript/Promise|Promise]]</code> مع استدعاء <code>[[JavaScript/Promise/then|then()]]</code> عليه. | ||
== القيمة المعادة == | == القيمة المعادة == | ||
سطر 50: | سطر 50: | ||
// original === cast ? true | // original === cast ? true | ||
// value: 33 | // value: 33 | ||
</syntaxhighlight>السبب في أنَّ الناتج قد ظهر بترتيبٍ مقلوب هو أنَّ الدوال المستدعاة عبر [[JavaScript/Promise | </syntaxhighlight>السبب في أنَّ الناتج قد ظهر بترتيبٍ مقلوب هو أنَّ الدوال المستدعاة عبر <code>[[JavaScript/Promise/then|then()]]</code> ستُستدعى بشكل غير متزامن. يمكنك العودة إلى توثيق الدالة <code>[[JavaScript/Promise/then|then()]]</code> للتفاصيل. | ||
قبول كائنات تستعمل <code>[[JavaScript/Promise | قبول كائنات تستعمل <code>[[JavaScript/Promise/then|then()]]</code> ورمي أخطاء:<syntaxhighlight lang="javascript"> | ||
// قبول كائن يستعمل الدالة then | // قبول كائن يستعمل الدالة then | ||
var p1 = Promise.resolve({ | var p1 = Promise.resolve({ | ||
سطر 97: | سطر 97: | ||
* [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve صفحة Promise.resolve() في توثيق MDN الرسمي]. | * [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve صفحة Promise.resolve() في توثيق MDN الرسمي]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript]] | ||
[[تصنيف:JavaScript | [[تصنيف:JavaScript Functions]] | ||
[[تصنيف:JavaScript Promise]] | [[تصنيف:JavaScript Promise]] |
المراجعة الحالية بتاريخ 18:26، 19 أبريل 2019
الدالة Promise.resolve(value)
ستُعيد كائن Promise
الذي قُبِل (resolved) مع القيمة value
المُحدَّدة. إذا كانت القيمة هي وعدٌ، فسيُعاد ذاك الوعد. وإذا كانت القيمة تمتلك استدعاءً للدالة ()then
، «فسيتبع» الوعد المُعاد ذاك الاستدعاء، وسيُعيد حالته النهائية؛ وفيما عدا ذلك من الحالات، سيتم تحقيق الوعد مع القيمة المعطية.
var promise1 = Promise.resolve([1, 2, 3]);
promise1.then(function(value) {
console.log(value);
//: Array [1, 2, 3]
});
البنية العامة
Promise.resolve(value);
Promise.resolve(promise);
Promise.resolve(thenable);
المعاملات
value
الوسيط الذي سيُقبل مع هذا الوعد، ويمكن أن يكون كائن Promise
أو كائن Promise
مع استدعاء then()
عليه.
القيمة المعادة
سيُقبَل الوعد Promise
مع القيمة المعطية، أو إذا مُرِّر وعدٌ آخر كقيمة، فستكون القيمة المُعادة من الوعد هي كائن Promise
المُمرَّر إليه.
الوصف
الدالة الساكنة ()Promise.resolve
تُعيد وعدًا Promise
الذي قد قُبِل (resolved).
أمثلة
استخدام الدالة ()Promise.resolve
:
Promise.resolve('Success').then(function(value) {
console.log(value); // "Success"
}, function(value) {
// لن تستدع
});
قبول مصفوفة:
var p = Promise.resolve([1,2,3]);
p.then(function(v) {
console.log(v[0]); // 1
});
قبول كائن Promise
آخر:
var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function(value) {
console.log('value: ' + value);
});
console.log('original === cast ? ' + (original === cast));
// سيُطبَع بالترتيب:
// original === cast ? true
// value: 33
السبب في أنَّ الناتج قد ظهر بترتيبٍ مقلوب هو أنَّ الدوال المستدعاة عبر then()
ستُستدعى بشكل غير متزامن. يمكنك العودة إلى توثيق الدالة then()
للتفاصيل.
قبول كائنات تستعمل then()
ورمي أخطاء:
// قبول كائن يستعمل الدالة then
var p1 = Promise.resolve({
then: function(onFulfill, onReject) { onFulfill('fulfilled!'); }
});
console.log(p1 instanceof Promise) // true, object casted to a Promise
p1.then(function(v) {
console.log(v); // "fulfilled!"
}, function(e) {
// لن تستدع
});
// سيرمي خطأ قبل قبول الوعد
// سيرفض الوعد
var thenable = { then: function(resolve) {
throw new TypeError('Throwing');
resolve('Resolving');
}};
var p2 = Promise.resolve(thenable);
p2.then(function(v) {
// لن تستدع
}, function(e) {
console.log(e); // TypeError: Throwing
});
// سيرمى خطأ بعد قبول الوعد
// سيُقبل الوعد
var thenable = { then: function(resolve) {
resolve('Resolving');
throw new TypeError('Throwing');
}};
var p3 = Promise.resolve(thenable);
p3.then(function(v) {
console.log(v); // "Resolving"
}, function(e) {
// لن تستدع
});