gpt4 book ai didi

javascript - Array.prototype.find() 在异步函数中返回未定义

转载 作者:行者123 更新时间:2023-11-28 17:29:25 33 4
gpt4 key购买 nike

我对 Array.prototype.find() 方法有疑问。当它在 $http request.. 中使用时,它似乎无法正常工作。我已经尝试了想到的所有内容,但它总是返回未定义。我猜想这个错误是存在的,因为我在定义 found_user 之前记录了 response.datauser_to_find 并且它们的值符合预期。

所以我有这项服务:

app.service('UserService', ['$http','$q', function($http, $q) {
return {
findUser: function(user_to_find) {
let defer = $q.defer();
$http({
method: "GET",
url: 'http://localhost:3000/users'
}).then(function(response){
let found_user = response.data.find(acc=>{ //found_user is always undefined
acc.username == user_to_find;
})
defer.resolve(found_user);
}),function(response) {
defer.reject(response);
console.log("Error finding user");
}
return defer.promise;
}
}
}])

最佳答案

您缺少返回。在您的情况下,谓词(传递给 find 的函数)返回未定义,因此 find 算法不会获得“匹配”。

只需添加返回:

    let found_user = response.data.find(acc=>{
return acc.username == user_to_find;
})

如果不使用花括号,则可以将其省略

    let found_user = response.data.find(acc=> (
acc.username === user_to_find;
))

我还建议使用 === (严格比较)而不是 == 进行比较。

关于javascript - Array.prototype.find() 在异步函数中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817412/

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