javascript - done() 也适用于整数吗?

标签 javascript jquery

我在 javascript (jquery) 中有这段代码

function getTopLevelId(gender) {
            var catId = $.ajax({
            type: 'GET',
            url: '{url}'
            dataType: 'html'
        });

        return catId;   //Returns defered object    
    }

function getSelectedCategoryId() {
    return 7; //returns int based on value in an element
};


function mainFuncion(id) {
    if (parseInt(id) === 0) {
        catObj= getTopLevelId(gender);    //Returns defered object       
    }
    else {
        catId = getSelectedCategoryId(id);  //Returns int
        catObj = catId;
    }

    $.when(catObj).done(function(catId) {
            //Doing some stuff and want to use catId as a category id
    }
}

我的问题是关于 done() 中的“做一些事情”。它对我来说SEEMS 就像 done() 被调用 并给我正确的类别 ID,即使 catId 只是一个 int,但这是否总是正确的?或者有没有其他方法可以“更安全”地实现我在 mainFunction 中想要的东西?

最佳答案

是的。如果没有参数传递给 $.when()是未解析的 promise 对象,然后立即调用 done 处理程序。

If a single argument is passed to jQuery.when and it is not a Deferred or a Promise, it will be treated as a resolved Deferred and any doneCallbacks attached will be executed immediately. The doneCallbacks are passed the original argument. In this case any failCallbacks you might set are never called since the Deferred is never rejected.

var a = 7;
$.when(a).done(function (x) {
    console.log('inside', x)
});
console.log('after')

演示:Fiddle , Fiddle2

关于javascript - done() 也适用于整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25379301/

相关文章:

javascript - 你如何使用 html5 localStorage 在 iphone Safari 上缓存 javascript?

javascript insidehtml 没有响应

javascript - 可点击 div 内的链接

javascript - 如何通过单击 KonvaJS Image 对象来创建 Bootstrap 弹出窗口?

javascript - jQuery.ajax 返回 jsonp 而不是 json

javascript - jPlayer "duration"在 iO 上计算为 1,440 分钟(对于所有 mp3)

javascript - 在 JavaScript 中计算总数

javascript - 正则表达式 '\s+-\s*|\s*-\s+' 无法正常工作

jquery - 如何使用 jQuery 更改 'text-decoration' 属性?

php - jQuery keydown 功能不起作用