javascript - 如何从延迟对象访问返回值?

标签 javascript jquery jquery-deferred

我有以下代码在存储库中使用 $.getJSON 返回一些数据,然后由其他函数使用。

$.when(
    repository.getUserDetails().done(dataPrimer.getUserDetails),

    $.Deferred(
        function (deferred) {
           deferred.resolve();
        }
    )

).done(
   function () {
       repository.getUserPolicyTitles().done(dataPrimer.getUserPolicyTitles);
   },

   function () {
       repository.getUserPage().done();
   }
);

这有效,但我需要从以下位置返回一个值:repository.getUserDetails().done(dataPrimer.getUserDetails) 可用作以下参数:repository.getUserPage().done();

getUserDetails 的 dataPrimer 模块目前看起来像这样:

var getUserDetails = function (jsonString) {
    var object = parser.parse(jsonString);
    userDetails.userName = object.user.userName;
    userDetails.lastPolicyWorkedOn = object.user.lastPolicyWorkedOn;
    return userDetails.lastPolicyWorkedOn;
}

我已经尝试了一些东西,比如 .pipe() 但没有任何乐趣,我想确信我使用的是一种不错的方法,所以我正在寻找“最佳实践”方式返回参数并在 repository.getUserPage() 函数中使用它好吗?

最佳答案

你应该使用 "then" .示例中的“数据”——“getUserPolicyTitles”函数返回的数据。

$.when(
    repository.getUserDetails().done(dataPrimer.getUserDetails),

    $.Deferred(
        function (deferred) {
           deferred.resolve();
        }
    )

).done(function() {

    repository
        .getUserPolicyTitles()
        .done(dataPrimer.getUserPolicyTitles)
        .then(function(data) {
            repository.getUserPage().done();
        })

});

关于javascript - 如何从延迟对象访问返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254503/

相关文章:

javascript - $.when() 延迟数组

jquery - $.when 对于单个 $.Deferred 有何作用?

javascript - jQuery 切换故障

javascript - 尝试使用 JavaScript 更改文本字段颜色

jquery - 如何让 jquery 拖动在移动设备上工作?

jquery - 我想做一个幻灯片div

javascript - jQuery onchange sum 无法限制输入类型数量

javascript - 我有一个延迟对象数组,如何将 then 与 jQuery.when 一起使用?它不需要数组

javascript - 通过字符串路径访问嵌套的 JavaScript 对象和数组

Javascript将单选按钮添加到DOM中的对话框