首页 > 解决方案 > 如何在 Lodash 的 reduce 中调用函数

问题描述

我正在尝试使用对象数组中的键获取唯一值。一切似乎都很好,但里面的函数调用减少了 get Uncaught (in promise): TypeError: Cannot read property 'getFile' of undefined。在 TypeScript 中是否有任何可能的方法来调用 reduce 中的函数。

_.reduce(items, function(result, value, key) {
    let file = this.getFile(value);
    (result[value] || (result[value] = [])).push(key);
    return result;
}, {});

我在reduce内部调用的函数。

async getFile(fileEntry) {
        try {
            return await new Promise((resolve, reject) =>
            fileEntry.file(resolve, reject)
            );
        } catch (err) {
            console.log(err);
        }
    }

提前致谢。

标签: javascripttypescriptlodash

解决方案


从您的问题来看,尚不清楚您是如何定义getFile功能的。

是不是这样

//example 1
async function getFile(fileEntry){
//function body
}

或者像这样

//example 2
this.getFile = async function(fileEntry){
//function body
}

如果getFile函数像示例 1那样定义,那么你应该这样调用它

let file = getFile(value);

希望对你有帮助。谢谢!


推荐阅读