‎‎پروميس هاي جاوااسكريپتJavaScript Promises -‎

Previous >    <Next  

‎‎كدهاي توليدي‎(producing code) ‎ كدي است كه ممكن است اجراي آن كمي طول بكشد .

‎‎كدهاي مصرفي‎(Consuming)‎ آنهائي است كه منتظر نتايج توليدي هستند .

‎‎يك پروميس‎(promis)‎ شئي است كه ارتباط مابين كدتوليدي و مصرفي را برقرار ميكند .

‎‎شئ پروميس جاوااسكريپتJavaScript Promise Object -‎

‎‎يك پروميس شامل كد توليدي و هم تماس با كدمصرف كننده است.

‎‎فرمت كليPromise

let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)

  myResolve(); // when successful
  myReject();  // when error
});

// "Consuming Code" (Must wait for a fulfilled Promise)
myPromise.then(
  function(value) { /* code if  successful */ },
  function(error) { /* code if  some error */ }
);



‎‎وقتي كه توليدكننده نتيجه را بدست آورد، بايد يكي از دوcallback را فرخواني كند .

‎‎وقوع يا هنگام ‎‎فراخواني
‎‎موفقيتSucess-‎ ‎‎myResolve(result value)‎‎
‎‎خطا ـError ‎‎myReject(error object)‎‎

‎‎ويژگي هاي شئ پروميسPromise Object Properties -‎

‎‎يك شئpromise جاوااسكريپت ميتواند داراي شرايط زير باشد :

‎شئ پروميس از دو ويژگيstate وresult پشتيباني ميكند . هنگاميكه شئ در حال كاراست، يعني ‎‎"pending‎"‎‎ويژگي result مقدارش undefined است .هنگاميكه شئ پروميس در حالت ‎‎"fulfilled‎"‎‎يعني تحقق مي يابد، ويژگيresult داراي مقداراست. اما اگر وضعيت ‎‎"Rejected‎"‎‎باشد، ويژگيresult دارايError object ميباشد.

‎‎جدول زير خلاصه آنرا بيان ميكند.

‎myPromise.state‎ ‎myPromise.result‎ ‎‎شـرح
‎‎"pending‎"‎ ‎undefined‎ ‎‎مقدار تعريف نشده
‎‎"fulfilled‎"‎ ‎a result value‎ ‎‎ويژگيresult داراي مقدار
‎‎"rejected‎"‎ ‎a error object‎ ‎‎اجراي ناموفق و حاصل ايجاد خطاي شئي

‎‎نميتوان به ويژگي هايstate و result شئ Promise دسترسي داشت .

‎‎براي رسيدگي به وعده ها بايد از متدPromise استفاده كرد .

‎‎چگونگي پروميسPromise How to -‎

‎‎در زير چگونگي استفاده از يك پروميس آمده است.

myPromise.then(
  function(value) { /* code if  successful */ },
  function(error) { /* code if  some error */ }
);

Promise.then()‎‎‎داراي دوآرگومان است، يك تابع كال بك براي موفقيت وكال بك ديگري ‎خطا .هر دو اختياري هستند، بنابراي ميتوان فقط براي موفقيت و يا شكست تابعي كال بك گذاشت.

‎‎مثال ـ نمونه استفاده از پروميس

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}

let myPromise = new Promise(function(myResolve, myReject) {
  let x = 0;

// The producing code (this may take some time)

  if  (x == 0) {
    myResolve("OK");
  } else {
    myReject("Error");
  }
});

myPromise.then(
  function(value) {myDisplayer(value);},
  function(error) {myDisplayer(error);}
);

--(go to editor for change code and run)

‎‎مثالهاي پروميس جاوااسكريپتJavaScript Promise Examples -‎

‎‎براي نشان دادن استفاده از پروميس ها ، از مثالهاي فصل قبلي كال بك استفاده ميشود:

‎‎درانتظار يك مهلت زماني ـWaiting for a Timeout

‎‎مثال ـ استفاده از كال بك

setTimeout(function() { myFunction("I love You !!!"); }, 3000);

function myFunction(value) {
  document.getElementById("demo").innerHTML = value;
}

--(go to editor for change code and run)

‎‎مثال ـ همان مثال با استفاده پروميس

let myPromise = new Promise(function(myResolve, myReject) {
  setTimeout(function() { myResolve("I love You !!"); }, 3000);
});

myPromise.then(function(value) {
  document.getElementById("demo").innerHTML = value;
});

--(go to editor for change code and run)

‎‎درانتظار يك فايل ـWating for a file

‎‎مثال ـ استفاده از كال بك

function getFile(myCallback) {
  let req = new XMLHttpRequest();
  req.open('GET', "mycar.html");
  req.onload = function() {
    if  (req.status == 200) {
      myCallback(req.responseText);
    } else {
      myCallback("Error: " + req.status);
    }
  }
  req.send();
}

getFile(myDisplayer);

--(go to editor for change code and run)

‎‎مثال ـ استفاده از پروميس

let myPromise = new Promise(function(myResolve, myReject) {
  let req = new XMLHttpRequest();
  req.open('GET', "mycar.htm");
  req.onload = function() {
    if  (req.status == 200) {
      myResolve(req.response);
    } else {
      myReject("File not Found");
    }
  };
  req.send();
});

myPromise.then(
  function(value) {myDisplayer(value);},
  function(error) {myDisplayer(error);}
);

--(go to editor for change code and run)

‎‎پشتيباني مرورگرBrowser Support -‎

‎ECMAScript 2015‎كه با ES6 شناخته ميشود، شئ پروميس جاوااسكريپت را معرفي كرد .

‎‎در جدول زير اعداد اولين نسخه اي هستند كه از اشياء پروميس كاملا پشتيبباني ميكنند.

Chorome Edge Firefox Safari Opera
‎‎33‎
Feb 2014‎
‎‎12‎
Jul 2015‎
‎‎29‎
Apr 2014‎
‎‎7.1‎
Sep 2014‎
‎‎20‎
Mar 2014‎

Previous >    <Next