我想知道,如果等待和。那么可以在同一个异步函数中使用? 这里是我的功能:
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得到了链接这个功能。
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
});
我为什么选择这种方式? 因为当我只用等待的关键字(不承诺构造函数),数据添加到数据库之前的承诺得到了解决; /什么不是我想要的东西(可能是我的地方犯了一个错误.. IDK)。
我的问题是,如果上面的代码是要做到这一点(它按预期工作)或者我应该重构它的正确方法是什么? 如果有,请告诉我怎么样。 这个问题是不是与特定问题相关的信息对我来说。 谢谢。