Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟对象上的函数调用_Javascript - Fatal编程技术网

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
将始终返回未定义。你需要使用承诺。可能重复的