我的Array.prototype.find()
方法存在问题。它在$http request..
中使用它似乎无法正常工作我已经尝试了所有想到的东西,但它总是返回undefined。我猜错误是因为我在定义response.data
之前记录了user_to_find
和found_user
,并且它们的值是预期的。
所以我有这项服务:
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;
}
}
}])
答案 0 :(得分:2)
您遗失了return
。谓词(传递给find的函数)在你的情况下返回undefined,因此find算法没有得到"匹配"。
只需添加return
:
let found_user = response.data.find(acc=>{ //found_user is always undefined
return acc.username == user_to_find;
})
如果您不使用花括号
,可以将其删除 let found_user = response.data.find(acc=> ( //found_user is always undefined
acc.username === user_to_find;
))
我还建议您使用===
(严格比较)代替==
进行比较。