国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

ES6的基礎(chǔ)知識(shí)(三)

lieeps / 632人閱讀

摘要:會(huì)觸發(fā)方法第一個(gè)回調(diào)會(huì)觸發(fā)方法第二個(gè)回調(diào)或方法成功操作失敗操作會(huì)終止的執(zhí)行需要方法觸發(fā)向下執(zhí)行執(zhí)行結(jié)果實(shí)現(xiàn)的參數(shù)是一個(gè)函數(shù)有和兩個(gè)參數(shù)回調(diào)函數(shù)中會(huì)指向需要保存才會(huì)指向?qū)嵗龑?duì)象三種狀態(tài)分別為狀態(tài)只能從變成或者成功回調(diào)方法集合失敗回調(diào)方法集合觸

promise
// resolve()會(huì)觸發(fā)then方法第一個(gè)回調(diào), reject()會(huì)觸發(fā)then方法第二個(gè)回調(diào)或catch方法
let p = new Promise((resolve, reject) => {
  setTimeout(() => {
    if (Math.random() > 0.5) {
      resolve("成功操作");
    } else {
      reject("失敗操作");
    }
  });
});

p.then(
  res => {
    console.log(res);
  },
  err => {
    console.log(err);
  }
);
generator
// yield會(huì)終止fn()的執(zhí)行,需要next()方法觸發(fā)fn()向下執(zhí)行
function* fn(x) {
  yield x[0];
  yield x[1];
  yield x[2];
}

let res;
let t = fn([1, 2, 3]);
do {
  res = t.next();
  console.log(res);
} while (!res.done);

// 執(zhí)行結(jié)果
// { value: 1, done: false }
// { value: 2, done: false }
// { value: 3, done: false }
// { value: undefined, done: true }
實(shí)現(xiàn)promise
// Promise的參數(shù)是一個(gè)函數(shù)async,async()有resolve和reject兩個(gè)參數(shù)
function Promise(async) {
  // 回調(diào)函數(shù)中this會(huì)指向window,需要保存才會(huì)指向Promise實(shí)例對(duì)象
  let _this = this;
  // Promise三種狀態(tài),分別為pending,resolved,rejected.狀態(tài)只能從pending變成resolved或者rejected
  _this.status = "pending";
  _this.val = undefined;
  // 成功回調(diào)方法集合
  _this.onResolvedCallbacks = [];
  // 失敗回調(diào)方法集合
  _this.onRejectedCallbacks = [];
  // 觸發(fā)resolve()方法異步狀態(tài)改變成成功, 將會(huì)執(zhí)行成功回調(diào)集合中的方法
  function resolve(val) {
    if (_this.status === "pending") {
      _this.status = "resolved";
      _this.val = val;
      _this.onResolvedCallbacks.forEach(item => item(val));
    }
  }
  // 觸發(fā)reject()方法異步狀態(tài)改變成失敗, 將會(huì)執(zhí)行失敗回調(diào)集合中的方法
  function reject(val) {
    if (_this.status === "pending") {
      _this.status = "rejected";
      _this.val = val;
      _this.onRejectedCallbacks.forEach(item => item(val));
    }
  }
  // 異常捕獲
  try {
    async(resolve, reject);
  } catch (err) {
    reject(err);
  }
}
// then方法有兩個(gè)參數(shù), 第一個(gè)異步成功后執(zhí)行的函數(shù), 第二個(gè)是異步出異常后執(zhí)行的函數(shù)
Promise.prototype.then = function(resolved, rejected) {
  let _this = this;
  if (_this.status === "pending") {
    // 將所有then要執(zhí)行的方法push到回調(diào)函數(shù)集合中,在狀態(tài)改為resolved執(zhí)行其中的方法
    _this.onResolvedCallbacks.push(resolved);
    // 將所有then要執(zhí)行的方法push到回調(diào)函數(shù)集合中,在狀態(tài)改為rejected執(zhí)行其中的方法
    _this.onRejectedCallbacks.push(rejected);
  }
  if (_this.status === "resolved") {
    resolved(_this.val);
  }
  if (_this.status === "rejected") {
    rejected(_this.val);
  }
};
實(shí)現(xiàn)generator
// 生成器
function fn(val) {
  let i = 0;
  return {
    next() {
      let done = i === val.length;
      let value = val[i++];
      return {
        value,
        done
      };
    }
  };
}

// 迭代器
let it = fn([1, 2, 3]);
let result;
do {
  result = it.next();
  console.log(result);
} while (!result.done);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/102818.html

相關(guān)文章

  • ES6基礎(chǔ)教學(xué)_解析彩票項(xiàng)目-學(xué)習(xí)筆記(一)

    摘要:彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄一完整走了一遍課程,覺(jué)得還不錯(cuò)。支持正版人人有責(zé)零基礎(chǔ)教學(xué)解析彩票項(xiàng)目下面是項(xiàng)目課程的目錄路線一個(gè)項(xiàng)目分為三部分業(yè)務(wù)邏輯,自動(dòng)構(gòu)建系統(tǒng),模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)接口處理。 彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄(一) 完整走了一遍課程,覺(jué)得還不錯(cuò)。 總結(jié): es6的知識(shí)點(diǎn)說(shuō)得還算清楚,主要是為了了解和使用,不是深究,所以淺嘗即止即可,所以覺(jué)得還不錯(cuò)。 完整還原了項(xiàng)目開(kāi)發(fā)的代碼設(shè)計(jì)和開(kāi)發(fā)過(guò)...

    blastz 評(píng)論0 收藏0
  • ES6部分方法點(diǎn)評(píng)():babel-preset-es2015-loose可轉(zhuǎn)換且移動(dòng)端兼容性較好

    摘要:是目前最常用的轉(zhuǎn)的工具,但即使是,各瀏覽器的支持度也是不一的,因此便產(chǎn)生了本文,找出一些能夠被翻譯成兼容性高代碼的語(yǔ)法。不可用因?yàn)闀?huì)使用到參考資料,用來(lái)查瀏覽器兼容性。到底將代碼轉(zhuǎn)換成什么鳥(niǎo)樣,感謝。官網(wǎng)試驗(yàn)轉(zhuǎn)換后的代碼 前言 由于目前各瀏覽器對(duì)ES6兼容性較低,再加上需要兼容歷史上各種版本的瀏覽器,因此,使用編譯器將ES6語(yǔ)法轉(zhuǎn)譯成ES5語(yǔ)法則勢(shì)在必行了。babel是目前最常用的ES...

    wean 評(píng)論0 收藏0
  • es6常用知識(shí)) prosime和generator

    摘要:異步執(zhí)行可以用回調(diào)函數(shù)實(shí)現(xiàn)。全成功也可以通過(guò)解構(gòu)數(shù)組的方式,將展開(kāi)賦值。可以依次拿到每個(gè)結(jié)果。放棄暫時(shí)放棄執(zhí)行相當(dāng)于創(chuàng)建了一個(gè)對(duì)象。代表是否完成,代表函數(shù)完成,已經(jīng)到終點(diǎn)。是因?yàn)樽罱K的結(jié)果需要在最后的時(shí)候返回最終結(jié)果 prosime 在JavaScript的世界中,所有代碼都是單線程執(zhí)行的。由于這個(gè)缺陷,導(dǎo)致JavaScript的所有網(wǎng)絡(luò)操作,瀏覽器事件,都必須是異步執(zhí)行。異步執(zhí)行可以...

    flybywind 評(píng)論0 收藏0
  • 從0到1使用VUE-CLI3開(kāi)發(fā)實(shí)戰(zhàn)(): ES6/ES7知識(shí)儲(chǔ)備

    摘要:它們都用于聲明變量。盲目使用替換后可能會(huì)導(dǎo)致預(yù)期意外的結(jié)果。有鑒于此,還是建議使用字符串,布爾和數(shù)字類(lèi)型的數(shù)據(jù)類(lèi)型。像使用這種下劃線命名約定在一個(gè)開(kāi)源項(xiàng)目中,命名規(guī)則很難維持得一直很好,這樣經(jīng)常會(huì)造成一些困擾。 今天群里有小伙伴跟我聊天,問(wèn)了我?guī)讉€(gè)關(guān)于ES6的問(wèn)題,我才意識(shí)到,大部分初學(xué)者在學(xué)習(xí)的過(guò)程中,都是學(xué)了HTML/CSS/JS之后就開(kāi)始上手學(xué)習(xí)框架了,而對(duì)于ES6的重視程度卻不...

    crossoverJie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<