Ajax承诺使用父/子函数



我正在使用带有taggle的ajax调用.js来检查数据库的类型标签值。taggle 文档指定return false onBeforeTagAdd 事件以防止添加标签,但我知道 ajax 无法做到这一点,因为它是异步的。我已经看到其他 SO 问题建议承诺使函数依赖于 ajax 响应,但是当 ajax 调用位于依赖其响应的父函数内时,我对如何使用承诺感到困惑 - 任何人都可以提供建议吗?下面是带有 ajax 调用的代码:

new Taggle('tagexample', {
    onBeforeTagAdd: function(event, tag) {
        // return false here would prevent tag from being added
        $.ajax({
            method:"POST",
            url:"inputcheck.php",
            data:"tag="+tag,
            dataType:"html",
            success:function(result){
                alert(result);
                if (result == 'no') {
                    // return false here won't work
                }
            }
        });
    },
});

Taggle 需要支持 onBeforeTagAdd 方法上的承诺,而从外观上看则不支持。

我唯一能想到的可能有效的方法是始终返回 false(在进行 ajax 调用之后),然后动态创建标签(如果是)。

new Taggle('tagexample', {
    onBeforeTagAdd: function(event, tag) {
        $.ajax({
            method:"POST",
            url:"inputcheck.php",
            data:"tag="+tag,
            dataType:"html",
            success:function(result){
                alert(result);
                if (result == 'yes') {
                    // create tag
                }
            }
        });
        return false;
    },
});

最新更新