jQuery2.0.3
(如chatapp messanger)
选择图像文件并显示为预览
这是一个非常重要的问题
提交
这是一个非常重要的问题
删除预览位置
async function send() {
sendMessage(); // send text(omit detail)
await sendImage(); // send image
resetAfterSending(); // delete preview display
}
function sendImage() {
return new Promise(res => {
messages.append(`
<div class=".preview-img">
<img src="${$('.hoge2').find('img').attr('src')}">
</div>
`);
return messages.ready(() => {
return res();
});
});
}
function resetAfterSending() {
/**
* if I use hide() instead of remove(), element remains in DOM element(you can see in chrome elements panel)
* But in this time, I need to delete in DOM element as well
*/
$('.preview-img').remove();
}
当我没有使用async/await时,resetAfterSendingMessage()将被执行,并且DOM中没有。preview-img元素,因此我甚至无法发送图像数据。 这就是为什么我尝试使用async/await,就像顶部的代码一样。
但当我试着那样改变时,图像可以被发送。
function send() {
sendMessage();
sendImage();
//**use setTimeout() !!
setTimeout(() => {
resetAfterSending();
},0);
}
我认为Async/Await执行函数,但没有完成呈现。 这就产生了问题。 (我甚至不知道是真是假)
如果我需要在呈现后执行函数,我需要像这个链接所说的那样使用setTimeout()?
如果有人不知道setTimeout(),请在这里评论一下。你知道setTimeout()不太酷,希望你明白我的意思。
由于SendImage()
返回一个promise
,因此可以使用.then()
sendImage().then(() => resetAfterSending());