我在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
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在done()中做"做一些事情".它看起来就像done()被调用并给我正确的类别ID,即使catId它只是一个int,但这总是如此吗?或者有没有其他方法可以"更安全"来实现我在mainFunction中想要的东西?
是.如果没有传递给它的参数$.when()是未解析的promise对象,则done立即调用该处理程序.
如果将单个参数传递给jQuery.when并且它不是Deferred或Promise,则将其视为已解决的Deferred,并且将立即执行任何附加的doneCallbacks.doneCallbacks传递原始参数.在这种情况下,永远不会调用您可能设置的任何failCallback,因为Deferred永远不会被拒绝.
var a = 7;
$.when(a).done(function (x) {
console.log('inside', x)
});
console.log('after')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |