国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

javascript - 有一個異步獲取數據的函數A,其他依賴這個A得到的數據的函數是否都必須是異步的?

瀏覽:157日期:2023-02-16 08:34:38

問題描述

現在是這樣,函數a是Promise異步返回數據,其他很多函數需要用到這個數據,我現在是每個依賴這個數據的函數都要a().then()這樣處理

function a() { return new Promise((resolve, reject) => { .... })}function getsub(id) { return a() .then((data) => {return ..... }) .catch((err) => {...})}function tree(id) { return a() .then((data) => {return ..... }) .catch((err) => {...})}

其中有一些遞歸循環依賴,復雜度增加后我感覺我要瘋了,有沒有其他好點的寫法啊?

問題解答

回答1:

可以用點函數式編程的寫法:

function mapData(call) { return () => a() .then((data) => call(data)) .catch((err) => call(null, err))}function sub(data, err) { ... }function sub2(data, err) { ... }function sub3(data, err) { ... }const getsub = mapData(sub)const getsub2 = mapData(sub2)const getsub3 = mapData(sub3)回答2:

嘗試一下 ES7 的 async/await ?或者 引入 async.js 庫,前后端通用。

回答3:

如果實時性和獨立性要求都很高,那好像是沒什么辦法...不然可以嘗試緩存a...看看其他人怎么說

標簽: JavaScript
主站蜘蛛池模板: 金乡县| 金华市| 商丘市| 无为县| 桦甸市| 霸州市| 容城县| 海安县| 福海县| 文山县| 龙泉市| 胶南市| 武冈市| 广汉市| 资中县| 灵川县| 长寿区| 滨州市| 长岭县| 密云县| 思南县| 洪湖市| 莲花县| 舟曲县| 通海县| 岳西县| 湘乡市| 屯门区| 焦作市| 武安市| 枣阳市| 鹤岗市| 嘉兴市| 米泉市| 松桃| 六盘水市| 景宁| 浦县| 靖州| 宿松县| 健康|