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

我有以下代码在存储库中使用$.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()使用它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(); }) });