I am implementing a callback for a 3rdParty javascript library and I need to return the value, but I need to get the value from the server. I need to do something like this:

3rdPartyObject.getCustomValue = function {
   return $.getJSON('myUrl');
}

getJson uses XMLHttpRequest which (I believe) has both synchronous and asynchronous behaviors, can I use the synchronouse behavior?

推荐答案

看看jQuery的源代码,这就是$.getJSON个功能:

getJSON: function( url, data, callback ) {
    return jQuery.get(url, data, callback, "json");
},

这就是$.get所做的一切:

get: function( url, data, callback, type ) {
    // shift arguments if data argument was omitted
    if ( jQuery.isFunction( data ) ) {
        callback = data;
        data = null;
    }

    return jQuery.ajax({
        type: "GET",
        url: url,
        data: data,
        success: callback,
        dataType: type
    });
},

No black magic there. Since you need to customize stuff other than the basic $.getJSON functionality, you can just use the low-level $.ajax function and pass the async option as false:

$.ajax({
    type: 'GET',
    url: 'whatever',
    dataType: 'json',
    success: function() { },
    data: {},
    async: false
});

Json相关问答推荐

在 json 嵌入的 YAML 文件中 - 使用 Python 仅替换 json 值

如何使用 jq 返回此 JSON 文件的“文本”字段?

在 Perl Mojolicious 中呈现 JSON 时防止转义字符

PowerShell - 如何迭代 PSCustomObject 嵌套对象?

如何使用 LINQ 在 C# 中重构对象?

使用新的 Net Core 3.0 Json 时忽略属性

C# 中的 JSON 格式化程序?

dotnet core System.Text.Json unescape unicode 字符串

Dart - _InternalLinkedHashMap 如何转换为 Map

TypeError:“float32”类型的对象不是 JSON 可序列化的

JSON.parse 返回字符串而不是对象

在 ASP.NET Core 2.0 Web Api 中返回“原始”json

使用 jq 判断字符串是否是有效的 JSON

在 React.js 中将 Async/Await 与 Axios 一起使用

在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象

来自 JSON 字符串的 Typescript `enum`

在 bash 中将 CSV 转换为 JSON

使用 jq 如何用其他名称替换键的名称

新的@angular/cli 版本中的文件 angular-cli.json 在哪里?

如何解析带有 c 样式注释的 json 文件?