从async / await nodejs返回多个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从async / await nodejs返回多个值相关的知识,希望对你有一定的参考价值。
是否可以从nodejs中的async / await返回多个值。例如,我可以在NodeJs
Callback中执行此操作,如下所示:
myValues("username1", function(err, country, pincode){
console.log(country);
console.log(pincode);
});
function myValues(value1, callback){
var country = getValue2FromAPI(value1); //foo
var pincode = getValue3FromAPI(value1); //bar
callback(null, country, pincode);
}
在async / await我会把它写成:
var final = await myValues("username1");
async function myValues(value1){
var country = getValue2FromAPI(value1);
var pincode = getValue3FromAPI(value1);
return country; // I would want to return country and pincode both
}
答案
如果这是你想要的:
return value2; // I would want to return value1 and value2 both
然后返回一个数组:
return [value1, value2];
或对象:
return { value1, value2 };
什么async
/ await
可以返回(顺便说一句,这不是你的例子中的内容,尽管你的问题的标题)与承诺可以解决的相同,这总是一个单一的价值 - 但是单值可以是数组或对象。
您描述的问题,即回调函数获得多个非错误参数和承诺用单个值解析是传统节点式错误优先回调和承诺(或async
/ await
)之间的阻抗不匹配。这在request-promise
这样的模块示例中得到了证明:
宣传像request
这样的回调式模块:
有时允许多个值作为回调参数传递。
这是由函数参数和return语句之间的不对称引起的。有些语言只支持单参数函数 - 有时候语法方便,所以你甚至不知道它 - 有些语言支持从函数返回的多个值。 javascript支持多个参数但是返回单个返回值,因此可以作为参数传递的内容与可以返回的内容不同(除非您将所有参数视为单个数组,即)。
以上是关于从async / await nodejs返回多个值的主要内容,如果未能解决你的问题,请参考以下文章
遇到 Async/Await Promise 问题 - Javascript/Nodejs
Async-Await:即使一个错误,如何在多个等待调用中获取数据?