九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JavaScript Promise 的使用技巧

“生產(chǎn)代碼”是可能需要一些時(shí)間來(lái)執(zhí)行的代碼。

“消費(fèi)代碼”是必須等待結(jié)果的代碼。

Promise 是一個(gè) JavaScript 對(duì)象,它鏈接生產(chǎn)代碼和消費(fèi)代碼。

看一段最簡(jiǎn)單的代碼:

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 */ });

執(zhí)行 new Promise 的構(gòu)造函數(shù)后,會(huì)立即進(jìn)入 Promise 的構(gòu)造函數(shù)體內(nèi),即包含了 resolve 和 reject 方法的匿名函數(shù)。

然后執(zhí)行完畢。此時(shí)并不會(huì)執(zhí)行 then 里的回調(diào)函數(shù)。

然后 then 指定的回調(diào)函數(shù)被異步調(diào)用,注意 Chrome 里的提示: [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-gClCUMmg-1660268588108)(https://upload-images.jianshu.io/upload_images/2085791-ceaee127517ade97.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 當(dāng) Promise 對(duì)象處于 pending(工作)狀態(tài)時(shí),結(jié)果是未定義的。

  • 當(dāng) Promise 對(duì)象 fulfilled 時(shí),結(jié)果是一個(gè)值。如下圖所示:

  • 當(dāng) Promise 對(duì)象被 rejected 時(shí),結(jié)果是一個(gè)錯(cuò)誤對(duì)象。

開發(fā)人員無(wú)法訪問(wèn) Promise 屬性狀態(tài)和結(jié)果,必須使用 Promise 方法來(lái)處理 Promise。

看一個(gè)包含 UI 的例子。

Promise 把異步代碼封裝起來(lái)。上圖的 setTimeout,模擬了一個(gè)耗時(shí) 3 秒的 HTTP 操作。

返回的 myPromise 對(duì)象,使用 then 注冊(cè)回調(diào)函數(shù)。回調(diào)函數(shù)不關(guān)心自己什么時(shí)候被調(diào)用。

運(yùn)行顯示:

3 秒后:

一個(gè)文件訪問(wèn)的例子:

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);});

函數(shù)體內(nèi)一般是一個(gè)比較費(fèi)時(shí)的操作,操作本身會(huì)立即執(zhí)行,但什么時(shí)候執(zhí)行結(jié)束?這就是一個(gè)異步操作了。執(zhí)行結(jié)束后,通過(guò) resolve 通知 then 注冊(cè)的回調(diào)函數(shù)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何寫出一個(gè)驚艷面試官的 Promise【近 1W字】
async/await 是如何讓代碼更加簡(jiǎn)潔的?
這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制
5分種讓你了解javascript異步編程的前世今生,從onclick到await/async
JavaScript錯(cuò)誤處理完整指南
Chrome - JavaScript調(diào)試技巧總結(jié)(瀏覽器調(diào)試JS)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服