基本上,我有几个js文件,file1.js和file2.js包含异步函数(DB get),file3.js将调用file1.js中的async函数并获取返回值,file4.js中的函数将调用file2.js中的async函数获取结果,并调用file3.js函数获取结果,然后处理这两个结果并发送到浏览器UI。模式类似如下。我的问题是file3.js和file4.js是否可以工作?代码结构看起来很糟糕,特别是file4.js,那里有一个“then”hell,有什么好的代码结构吗?
file1.js:
async function func1() {
......
return val1;
}
file2.js:
async function func2() {
......
return val2;
}
file3.js:
const file1 = require('./file1');
function func3() {
......
let func3Val = file1.func1()
.then(
function(value) { return value; }
)
// can func3Val get value above?
return func3Val + "--hello";
}
file4.js:
const file2 = require('./file2');
const file3 = require('./file3');
const func4= (req, res) => {
file2.func2().then((ret)=>{
let test1 = ret;
......
let test2 = file3.func3().then((value) => {
......
res.send([test2 value combined with test1]);
});
});
}
1条答案
按热度按时间ycl3bljg1#
我建议使用async/await而不是古老的
then/catch
。对于方法
func4
,由于func2
的值没有在func3
中使用,因此可以使用Promise.all来获得更好的样式和性能:func3
中的func3Val
将是undefined
,您还需要将其更改为async/await
。