Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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_Promise_Async Await - Fatal编程技术网

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我在答覆中加入了第二种方法。