如何异步定义javascript对象属性
有人能帮我异步定义对象属性吗?我下面的示例返回`name:undefined,我找不到任何关于如何同步执行此操作的策略如何异步定义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 `
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);
});