let func = function(){ reuturn new Promise( async (resolve, reject) => { await p1(); }) } 像这种写法,把async写在这里是否合适?
p1 完了resolve不就好了,或者里面没有其他异步的话直接resolve(p1()),,你这个是什么写法。。
@ganshiqingyuan 就是想在promise内用await,可能要await多个
@ganshiqingyuan let func = async function(){ try{ await p1(); await p2(); await p3(); return …; }catch(err){ 这里的报错如何被调用者捕获? 比如:return Promise.reject();??? } }
方式一: let func1 = async function(){ try { let a = await p1; let b = await p2; return Promise.resolve(); } catch (error) { return Promise.reject(); } } 方式二: let func2 = function(){ return new Promise(async (resolve, reject) => { try { let a = await p1; let b = await p2; resolve(); } catch (err) { reject(); } }) } 以上两种写法呢?是否合理?
await多个用 promise.all ,不是你这样写的
@phpsmarter 我需要方法的串行。然后需要将上面比如func2的结果返回出去给调用者,调用者也可以用await来获取结果
async function throwError() { 1+1n; } let func = async function(){ try{ await throwError(); return 123; }catch(err){ throw err; // 直接丢出去 } } // 在普通函数中捕获 func().catch(e =>console.log(`catch ${e}`)); // catch TypeError: Cannot mix BigInt and other types, use explicit conversions // 在async中捕获 (async() => { try { await func(); } catch (e) { console.log(`catch ${e}`); // catch TypeError: Cannot mix BigInt and other types, use explicit conversions } })()
const compose = (...functions) => input => functions.reduceRight((chain, func) => chain.then(func), Promise.resolve(input)) compose(insertDataWaitForData, getArray, getDataFromMediumWaitForUrl)(input) //上面的方法就是传入Medium网站url,从返回数据获得数组,然后插入数据库. 都是异步操作.
异步操作compos方法 ,里面的reduceRight是Ramda库的方法,Ramda库里应该还有直接拿来用的函数.
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
p1 完了resolve不就好了,或者里面没有其他异步的话直接resolve(p1()),,你这个是什么写法。。
@ganshiqingyuan 就是想在promise内用await,可能要await多个
@ganshiqingyuan let func = async function(){ try{ await p1(); await p2(); await p3(); return …; }catch(err){ 这里的报错如何被调用者捕获? 比如:return Promise.reject();??? } }
方式一: let func1 = async function(){ try { let a = await p1; let b = await p2; return Promise.resolve(); } catch (error) { return Promise.reject(); } } 方式二: let func2 = function(){ return new Promise(async (resolve, reject) => { try { let a = await p1; let b = await p2; resolve(); } catch (err) { reject(); } }) } 以上两种写法呢?是否合理?
await多个用 promise.all ,不是你这样写的
@phpsmarter 我需要方法的串行。然后需要将上面比如func2的结果返回出去给调用者,调用者也可以用await来获取结果
异步操作compos方法 ,里面的reduceRight是Ramda库的方法,Ramda库里应该还有直接拿来用的函数.