繁体   English   中英

如何使用 async/await 的语法返回 promise?

[英]How can I return a promise using the syntax of async/await?

所以我正在写一个 function 来上传文件,我正在使用 class Upload来这样做。 这个 class 有一个名为start的方法,它基本上将文件上传到我需要的地方,并返回一个 object 和上传文件的信息。

我所做的是:

upload = async (param, onFinish) => {
  const upload = new Upload(param)
  let response = await upload.start()

  response = doSomeWork(response)

  onFinish(response)
}

我这样使用它:

upload(param, (response) => {console.log(response)} )

如您所见,我对 javascript 中的异步 function 有点困惑,我可以看出它看起来很奇怪,其中一个原因是因为我到处都读到异步 function 应该始终返回 promise。

但我的问题是,在这种情况下,如果我需要先在响应中做一些工作,我怎么能返回 promise 呢? 实现这个的最佳方法是什么,所以我的异步 function 是可靠的?

我在 Stack overflow 上进行了搜索,但没有为我的问题找到明确的答案。我不知道是因为我没有正确理解答案,还是因为实际上没有答案,但我希望这不是一个重复的问题。

如果 function 是async的,那么它已经返回了Promise 只需返回您的值,它就会传递给Promise

upload = async (param) => {
  const upload = new Upload(param);
  let response = await upload.start();

  response = doSomeWork(response);

  return response;
}

然后你可以等待那个结果:

let response = await upload(param);
console.log(response);

或者在返回的Promise上使用 .then .then()

upload(param).then(response => console.log(response));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM