我了解了Async和Await的概念。 我尝试使用它,但没有得到想要的结果。
我的异步功能:
let get_server_resource = async () => {
let a = await x();
let b = await b();
return {
a: a, b: b
}
}
位于另一个作用域的函数调用。
let main = async () => {
result = await get_server_resource();
console.log(result);
}
但是,这不起作用。如何正确利用等待和异步?
谢谢。
答案 0 :(得分:1)
aysnc函数不返回值,而返回Promise
因此,除非您等待它们,否则您无法从它们那里获得价值,可以通过多种方式完成await关键字是最简单的方法,并且在异步代码中,您始终可以调用同步函数
chunks = []
for chunk in pd.read_csv('desired_file...', chunksize = 1000):
chunks.append(chunk)
df = pd.concat(chunks, ignore_index = True)
这具有不阻止您的代码的优点
否则,您可以使用then方法来设置要在完成时调用的回调
async useServerData()
{
result = await get_server_resource();
console.log(result);
processServerResource(result)
}
processServerResource(resource)
{
do Something
}
一个非常糟糕的选择是声明结果超出您的承诺范围,然后继续检查是否已设置
get_server_resource().then(processServerResource);
再次,这不是推荐的解决方案
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Methods
答案 1 :(得分:0)
如果我正确,问题是当您调用Main()函数时。您的Main()函数实际上返回一个Promise,并且即使结果对您而言并不有趣,您也应该这样处理。 因此,从一个非异步函数中,您可以像这样调用Main:
Main()
.then((result) => { /* ...continue */ })
.catch(error) => { /* ...what happened if an error occurred */ });