【问题标题】:how to set up a jquery promise on a function?如何在函数上设置 jquery 承诺?
【发布时间】:2013-10-17 12:01:28
【问题描述】:

我有这个测试用例:

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 在我调用getItem 之前没有得到set

有什么想法可以解决这个问题吗?

【问题讨论】:

  • 这里不需要使用promise...这里两个操作都是同步的
  • @ArunPJohny 我是这么认为的,但由于某种原因它不是

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


【解决方案1】:

你需要从方法中返回一个promise

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

【讨论】:

  • 我需要setTimeout... 函数吗,我希望它在默认情况下运行得尽可能快
  • @Patrioticcow 不是真的需要...这样做是为了模拟异步操作
猜你喜欢
  • 1970-01-01
  • 2020-05-15
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2020-03-17
相关资源
最近更新 更多