gpt4 book ai didi

javascript - 可以等待然后混合在一个实现中吗?

转载 作者:行者123 更新时间:2023-11-30 09:16:48 24 4
gpt4 key购买 nike

<分区>

我想知道是否可以在同一个异步函数中使用 await 和 .then?这是我的功能:

uploadImageToImgur: async function (file) {
return new Promise(function(resolve, reject) {
const url = 'https://api.imgur.com/3/image',
reader = new FileReader();

if (file) {
reader.readAsDataURL(file);
}

reader.onloadend = async function () {
let { result } = reader;

try {
const request = await fetch(url, {
method: 'POST',
headers: {
"Authorization": 'my auth',
},
body: result.replace(/^data:image\/(png|jpg|jpeg|gif);base64,/, "")
})
.then((response) => {
response.json()
.then(data => {
resolve(data.data.link)
})
});
} catch (e) {
reject(e);
}
}
});
},

然后我在另一个函数中调用此函数,我使用从 imgur API 获得的链接将对象保存到 indexedDb。

this.uploadImageToImgur(image)
.then((image) => {
let db = this.dbOpen.result,
tx = db.transaction('EventsStore', 'readwrite'),
store = tx.objectStore('EventsStore');

event = store.put({ title, location, description, summary, date, time, image });
//rest of the code
});

我为什么选择这种方法?因为当我只使用 await 关键字(没有 promise 构造函数)时,数据在 promise 被解析之前添加到数据库中;/这不是我想要的(可能我在某处犯了一个错误.. idk)。

我的问题是上面的代码是否是正确的方法(它按预期工作)或者我应该重构它吗?如果是这样,请告诉我如何。这个问题对我来说比与特定问题相关的信息更丰富。谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com