如何解决嵌套承诺的替代方法
我正在尝试创建一个函数,该函数获取预签名的s3 url(调用1)并放入s3。我唯一能弄清楚的方法就是使用嵌套的诺言,我理解这是一种反模式。
用js /伪代码将其写出
uploadfile(file){
return new Promise((resolve,reject) => {
axios.get(get-presigned-s3url).then((url) =>{ return axios.put(file)}
})
}
let filePromises = files.forEach(file => uploadfile(file));
promises.all((filePromises) => notifyUpload(filePromises));
我需要从uploadfile函数返回一个诺言,以等待所有诺言得以解决。处理这种情况的正确方法是什么?
解决方法
由于set.seed(641032)
x <- rnorm(10)
x
#> [1] 0.91326263 1.29385203 1.39573077 0.02985411 0.11766056 -1.15891724
#> [7] -1.02509101 -0.31448858 -0.06675214 -1.34341847
cummax(x)
#> [1] 0.9132626 1.2938520 1.3957308 1.3957308 1.3957308 1.3957308 1.3957308
#> [8] 1.3957308 1.3957308 1.3957308
已经返回了Promise,因此您不需要使用axios.get
在其周围构造另一个。
new Promise
不起作用,因为files.forEach
返回forEach
。请改用undefined
,这样您便有了一个Promises数组。
.map
const uploadFile = file => axios.get(url)
.then((url) => { return axios.put(file); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。