Javascript 延迟对象上的函数调用
我试图让这个代码返回每个员工的名字Javascript 延迟对象上的函数调用,javascript,Javascript,我试图让这个代码返回每个员工的名字 var公司={ 雇员:[ { 姓名:“道格” }, { 姓名:“AJ” } ], getName:函数(员工){ 返回employee.name }, getNames:function(){ 返回this.employees.map(this.getName) }, delayedGetNames:function(){ setTimeout(this.getNames,500) } } console.log(company.delayedGetName
var公司={
雇员:[
{
姓名:“道格”
},
{
姓名:“AJ”
}
],
getName:函数(员工){
返回employee.name
},
getNames:function(){
返回this.employees.map(this.getName)
},
delayedGetNames:function(){
setTimeout(this.getNames,500)
}
}
console.log(company.delayedGetNames())代码>您需要向函数添加回调以获取名称。
var公司={
雇员:[
{
姓名:“道格”
},
{
姓名:“AJ”
}
],
getName:函数(员工){
返回employee.name
},
getNames:function(){
返回this.employees.map(this.getName)
},
delayedGetNames:函数(cb){
setTimeout(()=>cb(this.getNames()),500)
}
}
company.delayedGetNames(names=>console.log(names))
或者,使用Promise
,您可以编写如下内容:
var公司={
雇员:[
{
姓名:“道格”
},
{
姓名:“AJ”
}
],
getName:函数(员工){
返回employee.name
},
getNames:function(){
返回this.employees.map(this.getName)
},
delayedGetNames:function(){
返回新承诺(resolve=>setTimeout(()=>resolve(this.getNames()),1000));
}
}
company.delayedGetNames().then(console.log)代码>使用少量技巧和getter
var company = {
employees: [
{
name: "doug"
},
{
name: "AJ"
}
],
getName: function(employee){
return employee.name
},
get getNames(){
console.log(this.employees.map(x => this.getName(x)));
},
get delayedGetNames(){
setTimeout(this.getNames,500)
}
}
console.log(company.delayedGetNames);
setTimeout
没有返回值。您的控制台.log
将始终返回未定义。你需要使用承诺。可能重复的