الفرق بين المراجعتين ل"JavaScript/Promise/resolve"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
ط
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>Promise.resolve()‎</code> في JavaScript}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>Promise.resolve()‎</code> في JavaScript}}</noinclude>
الدالة <code>Promise.resolve(value)‎</code> ستُعيد كائن <code>[[JavaScript/Promise|Promise]]</code> الذي قُبِل (resolved) مع القيمة <code>value</code> المُحدَّدة. إذا كانت القيمة هي وعدٌ، فسيُعاد ذاك الوعد. وإذا كانت القيمة تمتلك استدعاءً للدالة <code>[[JavaScript/Promise/prototype/then|then]]</code>، «فسيتبع» الوعد المُعاد ذاك الاستدعاء، وسيُعيد حالته النهائية؛ وفيما عدا ذلك من الحالات، سيتم تحقيق الوعد مع القيمة المعطية.<syntaxhighlight lang="javascript">
+
الدالة <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/prototype/then|then()‎]]</code> عليه.
+
الوسيط الذي سيُقبل مع هذا الوعد، ويمكن أن يكون كائن <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/prototype/then|<code>then()‎</code>]] ستُستدعى بشكل غير متزامن. يمكنك العودة إلى توثيق الدالة [[JavaScript/Promise/prototype/then|<code>then()‎</code>]] للتفاصيل.
+
</syntaxhighlight>السبب في أنَّ الناتج قد ظهر بترتيبٍ مقلوب هو أنَّ الدوال المستدعاة عبر <code>[[JavaScript/Promise/then|then()‎]]</code> ستُستدعى بشكل غير متزامن. يمكنك العودة إلى توثيق الدالة <code>[[JavaScript/Promise/then|then()‎]]</code> للتفاصيل.
  
قبول كائنات تستعمل <code>[[JavaScript/Promise/prototype/then|then()‎]]</code> ورمي أخطاء:<syntaxhighlight lang="javascript">
+
قبول كائنات تستعمل <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 Method]]
+
[[تصنيف: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) {
  // لن تستدع
});

المصادر