我有一个泛型函数,它会查询一些REST端点,并在收到结果后回调一个不同的函数:
function ajaxLoadMovieById(id, callback) {
$.getJSON(
'https://example.com/rest/v1/film/' + id,
function(data) { callback(data); }
);
}
我称之为:
ajaxLoadMovieById(movieId, function(movie) { ajaxOnLoadMovieComplete(movie); } );
但是,这不能按预期工作。我在包含'callback(data)'的行上收到类型错误:
Uncaught TypeError: callback is not a function
然而,'callback'是具有匹配签名的有效函数。我怎样才能做到这一点?
答案 0 :(得分:1)
更现代的方法是使用$.getJSON
返回的承诺,而不是传递回调:
function ajaxLoadMovieById(id) {
// return the promise
return $.getJSON('https://example.com/rest/v1/film/' + id);
}
ajaxLoadMovieById(movieId)
.done(ajaxOnLoadMovieComplete)
.fail(function(){// or add this to `$.getJSON` in function
//do something if request fails
});
答案 1 :(得分:-1)
请试试这个
function ajaxLoadMovieById(id, callback) {
this.callback = callback
this.id = id
$.getJSON(
'https://example.com/rest/v1/film/' + this.id,
function(data) { this.callback(data); }
);
}
或者这个:
$.getJSON('https://example.com/rest/v1/film/' +id)
.done(funtion(data) {
callback(data); // or another function
}).fail(function() {
console.log( "error" );
});