Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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_Object_Asynchronous - Fatal编程技术网

如何异步定义javascript对象属性

如何异步定义javascript对象属性,javascript,object,asynchronous,Javascript,Object,Asynchronous,有人能帮我异步定义对象属性吗?我下面的示例返回`name:undefined,我找不到任何关于如何同步执行此操作的策略 function returnName () { setTimeout(function() { return 'John Wick' }, 3000); } const person = { name: returnName(), age: 23 } console.log(person) // person.name returns `

有人能帮我异步定义对象属性吗?我下面的示例返回`name:undefined,我找不到任何关于如何同步执行此操作的策略

function returnName () {
    setTimeout(function() { 
    return 'John Wick'
  }, 3000);
}

const person = {
    name: returnName(),
  age: 23
}

console.log(person) // person.name returns `undefined`

提前谢谢

只有在通过函数
returnName()
解析了
人员的姓名后,您才能使用类似a的方法设置/记录该人员的姓名,无论是通过
setTimeout()
还是异步DB调用?
Promise
将为您提供一种简单有效的方法,仅在异步方法完成后执行操作,并通过
.then()
.catch()
为您提供处理成功和错误的选项

下面是一个演示功能的示例


希望这有帮助

超时的“返回值”是超时的ID…为什么不等待3秒钟,然后将属性分配给对象?
function returnName() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
        return resolve('John Wick');
    }, 3000);
  });
}

let person = { age: 23 };

returnName().then(function(name) {
  person.name = name;
  console.log(person);
});