如何在函数上设置jquery承诺?

时间:2013-10-17 03:53:37

标签: javascript jquery local-storage promise jquery-deferred

我有这个测试用例:

function setInitialValues (data) {
    window.localStorage.setItem ("name", "some name");
}

var data = '';
$.when (setInitialValues (data)).then (function (data) {
    window.localStorage.getItem ("name"); // this will be 'undefined' instead of 'some name'
});

在我致电name

之前,set未获得getItem会发生什么?

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要从方法

返回一个承诺
function setInitialValues (data) {
    var deferred = jQuery.Deferred();
    //if some async operation is going on here then to simulate
    setTimeout(function(){
        window.localStorage.setItem ("name", "some name");
        deferred.resolve()
    }, 10)
    return deferred.promise();
}

演示:Fiddle