Skip to content

Latest commit

 

History

History
84 lines (66 loc) · 3.06 KB

ES2018.MD

File metadata and controls

84 lines (66 loc) · 3.06 KB

ES2018 (ES9)

برای دیدن مشخصات کامل زبان اکما اسکریپت 9 ، لینک ES2018 standard را ببینید

ES11 شامل ویژگی های جدید پیشنهادی زیر است:


Async iterators (پیمایشگرهای غیر عمزمان)

پیمایشگرهای غیر همزمان شبیه پیمایشگرهای عادی هستند. اما در این حالت، تابع next یک promise بر می گرداند.این promise یک آبجکت { value, done } را resolve می کند. نیاز است یک promise برگردانده شود چون، در آن حالت (Async) پیمایشگر داده‌هایی را به عنوان value و done برمی گرداند که ناشناخته هستند.

function asyncIterator() {
  const array = [1, 2];
  return {
    next: function() {
      if (array.length) {
        return Promise.resolve({
          value: array.shift(),
          done: false
        });
      } else {
        return Promise.resolve({
          done: true
        });
      }
    }
  };
}

var iterator = asyncIterator();

(async function() {
    await iterator.next().then(console.log); // { value: 1, done: false }
    await iterator.next().then(console.log); // { value: 2, done: false }
    await iterator.next().then(console.log); // { done: true }
})();

Object rest properties (خصوصیات آبجکت rest)

انتساب پراپرتی های (خصوصیات ) Rest برای تخرب آبجکت.

let { fname, lname, ...rest } = { fname: "Hemanth", lname: "HM", location: "Earth", type: "Human" };
fname; //"Hemanth"
lname; //"HM"
rest; // {location: "Earth", type: "Human"}

Object spread properties

انتساب پراپرتی های (خصوصیات) Spread برای تخریب آبجکت.

let info = {fname, lname, ...rest};

info; // { fname: "Hemanth", lname: "HM", location: "Earth", type: "Human" }

Promise prototype finally

Promise API با بلاک اختیاری finaly توسعه یافته است و بعد از اینکه Promise، چه resolve شود چه reject شود ، finaly فراخوانی می شود ( در این متن به خاطر نمایش درست راست چین ، از حرف اضافه "چه" استفاده شده است.)

function testFinally() {
  return new Promise((resolve,reject) => resolve())
}

testFinally().then(() => console.debug("resolved")).finally(() => console.debug("finally"))
// resolved
// finally