Javascript 我想返回对象中异步函数的值
我有一个异步函数。我想创建一个对象,对象中属性的值是异步函数的返回值。但现在,财产的价值是一种承诺 我的代码如下:Javascript 我想返回对象中异步函数的值,javascript,promise,async-await,Javascript,Promise,Async Await,我有一个异步函数。我想创建一个对象,对象中属性的值是异步函数的返回值。但现在,财产的价值是一种承诺 我的代码如下: const promise1=新承诺(函数(解析、拒绝){ 解析(“myvalue”); }); 常量a=async()=>{ var b=等待承诺1 返回b; } 常量newobj={'a':a()}; console.log(newobj) //结果是:{a:Promise{:“myvalue”}但是我想要{a:myvalue”}您需要等待您的异步函数。因此 const ne
const promise1=新承诺(函数(解析、拒绝){
解析(“myvalue”);
});
常量a=async()=>{
var b=等待承诺1
返回b;
}
常量newobj={'a':a()};
console.log(newobj)
//结果是:{a:Promise{:“myvalue”}但是我想要{a:myvalue”}
您需要等待您的异步函数。因此
const newobj = {'a': a()};
做
a()
返回一个承诺,await a()
是(将是)该承诺返回的值。您需要await
异步函数。因此
const newobj = {'a': a()};
做
a()
返回一个承诺,wait a()
是(将是)该承诺返回的值。代码的问题是,您正在将返回的一个函数(这是一个异步函数,因此它将返回承诺)分配给newObj.a
异步函数可以包含一个等待表达式,该表达式暂停异步函数的执行并等待传递的承诺的解析,然后恢复异步函数的执行并返回解析的值。你可以阅读更多关于它的内容
请记住,await关键字仅在异步函数中有效。如果在异步函数体之外使用它,将得到一个SyntaxError
方法1
const promise1=新承诺(函数(解析、拒绝){
解析(“myvalue”);
});
常量a=async()=>{
var b=等待承诺1
返回b;
}
常量printData=async()=>{
常数newobj={
“a”:等待a()
};
console.log(newobj)
}
printData()
您的代码的问题是,您正在将返回的赋值给newObj.a
(这是一个异步函数,因此它将返回承诺
)
异步函数可以包含一个等待表达式,该表达式暂停异步函数的执行并等待传递的承诺的解析,然后恢复异步函数的执行并返回解析的值。你可以阅读更多关于它的内容
请记住,await关键字仅在异步函数中有效。如果在异步函数体之外使用它,将得到一个SyntaxError
方法1
const promise1=新承诺(函数(解析、拒绝){
解析(“myvalue”);
});
常量a=async()=>{
var b=等待承诺1
返回b;
}
常量printData=async()=>{
常数newobj={
“a”:等待a()
};
console.log(newobj)
}
printData()
这里的问题是运行a()将返回一个承诺,因此,为了分配承诺的结果,应该先等待它完成
以下是一种可能的方法:
const promise1=新承诺(函数(解析、拒绝){
解析(“myvalue”);
});
常量a=async()=>{
var b=等待承诺1
返回b;
}
const run=async()=>{
const newobj={'a':等待a()};
console.log(newobj);
}
运行()
这里的问题是,运行a()将返回一个承诺,因此,为了分配承诺的结果,应该先等待它完成
以下是一种可能的方法:
const promise1=新承诺(函数(解析、拒绝){
解析(“myvalue”);
});
常量a=async()=>{
var b=等待承诺1
返回b;
}
const run=async()=>{
const newobj={'a':等待a()};
console.log(newobj);
}
运行()
这里的问题是,您只能从async
函数内部使用wait
。这里的问题是您只能从async
函数内部使用wait
。您不能这样做。您可以将.then()
与返回的承诺一起使用,并在回调中构造您的值。将承诺包装到异步
函数中不会使结果同步可用。您不能这样做。您可以将.then()
与返回的承诺一起使用,并在回调中构造您的值。将承诺包装到异步
函数中不会使结果同步可用。我的问题是,我想在PrintData const promise1=新承诺(函数(resolve,reject){resolve('myvalue');})中返回一个值;const a=async()=>{var b=await promise1 return b;}const printData=async()=>{const newobj={'a':wait a()};return newobj}printData()将所有内容包装在异步IIFE函数中,然后等待inside@johnsonandriatiana我在答案中添加了第二种方法,我的问题是我想在printdataconstpromise1=newpromise(函数(resolve,reject){resolve('myvalue');})中返回一个值;const a=async()=>{var b=await promise1 return b;}const printData=async()=>{const newobj={'a':wait a()};return newobj}printData()将所有内容包装在异步IIFE函数中,然后等待inside@johnsonandriatiana我在答覆中加入了第二种方法。