do()也完成了对int的工作?

时间:2014-08-19 08:54:31

标签: 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中想要的东西?

1 个答案:

答案 0 :(得分:5)

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

  

如果将单个参数传递给jQuery.when并且它不是Deferred   或承诺,它将被视为已解决的延期和任何   附加的doneCallbacks将立即执行。 doneCallbacks   传递原始参数。在这种情况下,任何failCallbacks你   可能设置永远不会被调用,因为延迟永远不会被拒绝。

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

演示:FiddleFiddle2