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

資訊專欄INFORMATION COLUMN

【js】async和await使用

luodongseu / 3306人閱讀

摘要:摘自模塊關(guān)于和使用個人理解在每一個函數(shù)前面的都加上,函數(shù)內(nèi)部,如果是異步操作,直接在其前面加上即可,等待一步函數(shù)執(zhí)行的結(jié)果。修飾的函數(shù)自動變成一個正常情況下,命令后面是一個對象。并發(fā)執(zhí)行的方式選擇或者使用下面的寫法使用循環(huán)控制了使用的時間

摘自http://es6.ruanyifeng.com/#docs/async#co模塊

關(guān)于asyncawait使用

個人理解:在每一個函數(shù)前面的都加上async,函數(shù)內(nèi)部,如果是異步操作,直接在其前面加上await即可,等待一步函數(shù)執(zhí)行的結(jié)果。await后面可以接任何變量,可以是常量或者promiseasync修飾的函數(shù)自動變成一個promise.正常情況下,await命令后面是一個 Promise 對象。如果不是,會被轉(zhuǎn)成一個立即resolve的 Promise 對象。

//經(jīng)過async修飾之后,自動變成promise對象
async function f() {
  return "hello world";
}

f().then(v => console.log(v))
// "hello world"

async function f() {
  return await 123;
}

f().then(v => console.log(v))
// 123
//錯誤處理 
async function f() {
  throw new Error("出錯了");
}

f().then(
  v => console.log(v),
  e => console.log(e)
)
// Error: 出錯了
async中錯誤處理
//使用catch捕捉錯誤
async function f() {
  await Promise.reject("出錯了");
}

f()
.then(v => console.log(v))
.catch(e => console.log(e))
// 出錯了
async function main() {
  try {
    var val1 = await firstStep();
    var val2 = await secondStep(val1);
    var val3 = await thirdStep(val1, val2);

    console.log("Final: ", val3);
  }
  catch (err) {
    console.error(err);
  }
}
//使用async控制指定時間打印
function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value)
}

asyncPrint("hello world", 50);
多種形式
const foo = async function(){}
async function foo(){}
const foo = async () => {};
并發(fā)處理
let foo = await getFoo();
let bar = await getBar();
//======================
// 寫法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);

// 寫法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
//使用下面的方式是,使一步操作同時觸發(fā)。最上面的方式是同步執(zhí)行。


//并發(fā)執(zhí)行的方式選擇
async function dbFuc(db) {
  let docs = [{}, {}, {}];
  let promises = docs.map((doc) => db.post(doc));

  let results = await Promise.all(promises);
  console.log(results);
}

// 或者使用下面的寫法
//使用for循環(huán)控制了使用await的時間
async function dbFuc(db) {
  let docs = [{}, {}, {}];
  let promises = docs.map((doc) => db.post(doc));

  let results = [];
  for (let promise of promises) {
    results.push(await promise);
  }
  console.log(results);
}

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

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

相關(guān)文章

  • 【譯文】Node.js v7 Nightly版本的async/await小實踐

    摘要:正文的實踐幾個月前,引擎加入了特性。注意目前特性只在非穩(wěn)定版本的中才有。暫時建議不要用于生產(chǎn)環(huán)境。意思是它能以非阻塞的方式暫定代碼的執(zhí)行,以等待上一個結(jié)果返回。在此之前,還它只能通過轉(zhuǎn)譯器來實現(xiàn)。 來自新手向國外技術(shù)博客RisingStack的又一篇Node.js相關(guān)技術(shù)文章,原文請看此。 正文 Node.js v7的async/await實踐 幾個月前,JavaScript引擎V8加...

    Little_XM 評論0 收藏0
  • Async/Await替代Promise的6個理由

    摘要:是基于實現(xiàn)的,它不能用于普通的回調(diào)函數(shù)。憂慮對于,也許你有一些合理的懷疑它使得異步代碼不再明顯我們已經(jīng)習慣了用回調(diào)函數(shù)或者來識別異步代碼,我們可能需要花數(shù)個星期去習慣新的標志。 譯者按: Node.js的異步編程方式有效提高了應用性能;然而回調(diào)地獄卻讓人望而生畏,Promise讓我們告別回調(diào)函數(shù),寫出更優(yōu)雅的異步代碼;在實踐過程中,卻發(fā)現(xiàn)Promise并不完美;技術(shù)進步是無止境的,這時...

    tuomao 評論0 收藏0
  • JS基礎(chǔ)】從JavaScript中的for...of說起(下) - asyncawait

    摘要:基礎(chǔ)從中的說起上和在異步操作中使用和是一件比較費勁的事情,而給我們提供了更為簡便的和。表達式會暫停當前的執(zhí)行,等待處理完成。若正常處理,其回調(diào)的函數(shù)參數(shù)作為表達式的值,繼續(xù)執(zhí)行。若處理異常,表達式會把的異常原因拋出。 寫在前面 本文首發(fā)于公眾號:【符合預期的CoyPan】 在上一篇文章中,梳理了javascript中的兩個重要概念:iterator和generator,并且介紹了兩者在...

    hufeng 評論0 收藏0
  • JS中的async/await -- 異步隧道盡頭的亮光

    摘要:結(jié)果輸出可以看出函數(shù)返回的是一個對象,如果函數(shù)中一個直接量,函數(shù)會封裝成對象返回,而如果沒有返回值時,函數(shù)會返回在沒有結(jié)合時,函數(shù)會立即執(zhí)行,返回一個對象。 JS中的異步操作從最初的回調(diào)函數(shù)演進到Promise,再到Generator,都是逐步的改進,而async函數(shù)的出現(xiàn)仿佛看到了異步方案的終點,用同步的方式寫異步。showImg(https://segmentfault.com/i...

    jaysun 評論0 收藏0
  • 如何在 JS 循環(huán)中正確使用 asyncawait

    摘要:蛤當你嘗試在循環(huán)中使用時,事情就會變得復雜一些。這意味著循環(huán)中的應該按順序執(zhí)行。在循環(huán)中使用首先,使用對數(shù)組進行遍歷。在中使用如果在中使用始終返回數(shù)組,這是因為異步函數(shù)總是返回。在循環(huán)中使用當你使用時,希望篩選具有特定結(jié)果的數(shù)組。 async 與 await 的使用方式相對簡單。 蛤當你嘗試在循環(huán)中使用await時,事情就會變得復雜一些。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年...

    liujs 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<