簡體   English   中英

如何控制異步函數的流程?

[英]How to control flow of async functions?

我有一個異步函數鏈,需要按順序執行。 但是,如果其中一個功能失敗或耗時過長,則應重新觸發一定次數。

所以我的問題是:擁有這樣一個帶有異步功能的控制流的標准/優雅結構是什么? 例如:

funcA()
    .then(resultA => funcB(resultA)
        .then(resultB => funcC(resultB)
            .then(...))

你可以這樣做

function funcA() {
    return Promise.resolve('a');
}

function funcB(data) {
    return Promise.resolve(data + ' b');
}

function funcC(data) {
    return Promise.resolve(data + ' c');
}

async function controlFlowExample() {
  const resultA = await funcA();
  const resultB = await funcB(resultA);
  const resultC = await funcC(resultB);
  
  console.log(resultC);
}

controlFlowExample();

您可以使用 async-await 將它們整齊地鏈接在一起:

const res_a = await funcA()
const res_b = await funcB(res_a)
const res_c = await funcC(res_b)

這比鏈接.then更好,因為在這里保存更多值時更容易調試。

旁注:如果你這樣做,最好在你的函數中實現 trycatch。

IMO 它看起來也更整潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM