我希望async/await
与fetch
一起使用以响应我的用户从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响应 - 但是没有记录三个日志。
我错过了什么?将此更改为同步处理程序并注释掉等待会使日志显示;将异步函数作为事件处理程序是不合法的吗?