【发布时间】:2021-01-28 02:58:10
【问题描述】:
我有一个负责将图像上传到远程存储的功能。
我还有另一个在数据库中创建用户的函数。在创建用户的过程中,我应该上传图片,取回上传图片的URL,并将其添加到用户对象中,然后再添加到数据库中。但是,我被困在取回网址:
我上传图片的函数:
export const writePicture = (picture) => {
if (picture !== undefined) {
//code to upload image to database (...)
.then((url) => {
console.log(`finished executing writePicture, url: ${url}`) //all good here, url is console logged.
return url;
});
});
} else {
console.log("finished executing writePicture")
return ""
};
}
上面的函数被导出到另一个我使用 Promise 的文件。我的承诺目前设置如下:
//pictureLogo and pictureImage are existing image objects
const waitForLogoUrl = new Promise((resolve, reject) => {
resolve(writePicture(pictureLogo));
});
const waitForImageUrl = new Promise((resolve, reject) => {
resolve(writePicture(pictureImage));
});
Promise.all([waitForLogoUrl, waitForImageUrl]).then((urls) => {
//urls should be an array containing the urls from first and second promise
console.log("the urls are:");
console.log(urls);
});
上述内容未按预期工作。在urls 中,我得到了一个包含两个未定义条目的数组,而不是两个获得的 url。
writePicture() 工作正常,它正在上传图片和控制台记录 url。但是,在 Promise.all 完成后,这些 URL 将被控制台记录:
我不熟悉使用 Promise,所以我可能遗漏了一些关于如何在解析中调用函数的内容。任何帮助表示赞赏。
【问题讨论】:
-
我想它在某种程度上确实如此,但那里有很多例子,我自己也找不到解决办法。谢谢你的建议,这是一个很好的资源
标签: javascript promise