为什么没有调用jQuery事件的异步事件处理程序?

时间:2018-01-10 19:39:47

标签: javascript jquery asynchronous es2017

我希望async/awaitfetch一起使用以响应我的用户从HTML <select>下拉菜单中选择内容。为此,我要在select元素的change事件中添加异步事件处理程序:

import createDebug from 'debug';
const { onLoad } = require('./util');
const debug = createDebug('data_sources');

onLoad(() => {
  const createParserArgsInputs = async (ev) => {
    debug('hi');
    const $target = $(ev.target);
    const id = $target.val();
    debug($target, id);
    const response = await fetch(`/source-types/${id}/details`);
    const details = await response.json();
    debug(details.parser_args);
  };

  $('#data_source_source_type_id').on('change', createParserArgsInputs);
});

onLoad相当于$(document).ready;所有这些都是在被发送到浏览器之前由Babel预处理的。

但是,当我从下拉列表中选择某些内容时,我什么也得不到。没有日志;没有错误消息。然而,网络请求触发,并返回预期的JSON响应 - 但是没有记录三个日志。

我错过了什么?将此更改为同步处理程序并注释掉等待会使日志显示;将异步函数作为事件处理程序是不合法的吗?

0 个答案:

没有答案