我想知道这两个代码之间是否存在任何概念上的差异:
代码1:
$(function(){
var url = "url";
$.getJSON(url, function(data){
console.log(data);
})
});
代码2:
$(function(){
var url = "url";
$.getJSON(url).done(function(data){
console.log(data);
})
});
在哪种情况下,$ .getJson()。done()方法最相关?
答案 0 :(得分:1)
第一个使用回调函数作为第二个参数。这允许您在功能完成后执行代码。请注意,您处于单独的功能中。
The Second也使用回调函数作为承诺,但它的工作方式不同。
// version one
setTimeout(function() {
doStuff1();
doStuff2();
}, 1000)
// version one - callback
function doStuff1() {
doSomething1("value", function(responce) {
console.log(responce);
});
};
function doSomething1(v, cb) {
if (typeof v === "string") {
cb(true);
} else {
cb(false);
}
return false;
}
// note the function will always return false but the callback gets the value you want
// version 2, class with promise callback
// look at the class function and see how it works slightly differently
function doStuff2() {
var $ = new doSomething2();
$.Something("value").done(function(resp) {
console.log(resp)
});
};
class doSomething2 {
constructor() {
this.v = false;
}
Something(val) {
if (typeof val === "string") {
this.v = true;
} else {
this.v = false;
}
return this;
}
done(cb) {
return cb(this.v);
}
}