首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以下代码在click事件完成之前执行

以下代码在click事件完成之前执行
EN

Stack Overflow用户
提问于 2018-10-17 04:32:01
回答 1查看 68关注 0票数 -1

我正在尝试编写一个“相对”通用的函数,用于一次点击文件上传操作,而不是使用jQuery文件上传插件。如果按顺序执行,所有单独的步骤都可以正常工作,但我遇到了麻烦,因为在用户选择要上传的文件之前,我的函数的其余部分都会执行。我非常感谢任何关于如何让我的JS等待我的用户的建议:

功能:

代码语言:javascript
复制
function filePost(ev) {
  var anch = getAnchor(ev);
  var form = document.querySelector(anch.dataset.form);
  var fileInput = form.querySelector('input[type="file"]');

  fileInput.click(); //<- CLICK EVENT I WANT TO WAIT FOR

  var url = form.getAttribute('action');
  var reloadTarget = anch.dataset.reload;
  var data = new FormData(form);
  var prom = fetch(url, {
    method: form.getAttribute('method'),
    credentials: 'same-origin',
    body: data
}).then(function (resp) {
    return resp.json();
}).then(function (response) {
    if (response.is_valid) {
        var html = response.html;
    } else {
        var html = response.err_msg;
    }
    document.querySelector(reloadTarget).innerHTML = html;
}).catch(function (err) {
    console.log(err);
});
return prom;
}
EN

回答 1

Stack Overflow用户

发布于 2018-10-17 04:39:23

使用回调。就像使用.then一样

如果fileInput.click()不返回Promise (不能与回调.then链接),那么可以将click()包装在一个返回Promise的函数中

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52843640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档