gpt4 book ai didi

javascript - 编写此 promise 链的更好方法

转载 作者:行者123 更新时间:2023-11-30 05:39:57 26 4
gpt4 key购买 nike

我正在学习 Node 并且有一个函数可以递归目录并返回匹配模式的文件 promise 。这工作得很好,但我希望能够同时处理任意数量的文件类型,并且我正在像这样链接函数:

findFiles(scriptLocation, '.type1.').then(function (type1Files) { 
console.log('type1Files: ' + type1Files)
findFiles(scriptLocation, '.type2.').then(function (type2Files) {
console.log('type2Files: ' + type2Files)
findFiles(scriptLocation, '.type3.').then(function (type3Files) {
console.log('type3Files: ' + type3Files)
})
})
})

但随着我添加更多类型,它可能会变得非常草率。我试过了

Q.all([
findFiles(scriptLocation, '.type1.')
, findFiles(scriptLocation, '.type2.')
, findFiles(scriptLocation, '.type3.')
]).then(function(type1Files, type2Files, type3Files){
// all files returned in the first parameter...
})

我喜欢第二个版本的语法,但它并不能完全满足我的要求,因为结果不是单独返回而是汇总成一个结果。

我正在使用 Q 作为我的 promise 库。

最佳答案

改用spread:

Q.all([
findFiles(scriptLocation, '.type1.')
, findFiles(scriptLocation, '.type2.')
, findFiles(scriptLocation, '.type3.')
]).spread(function(type1Files, type2Files, type3Files){
// ...
})

来自DOCs :

If you have a promise for an array, you can use spread as a replacement for then. The spread function “spreads” the values over the arguments of the fulfillment handler. The rejection handler will get called at the first sign of failure. That is, whichever of the received promises fails first gets handled by the rejection handler.

关于javascript - 编写此 promise 链的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com