我希望我的postuserWall()函数等待FB.api响应,然后返回true或false。但它不等待响应。
我怎样才能让它等待响应
这是我的主函数,它调用postuserWall函数,警报显示undefined
$('.vacancies_tbl').on('click', '.btn-edit-vacancy', function(e) {
e.preventDefault();
var $this = $(this);
var chcek = postuserWall();
alert(chcek);
if(check){
window.location = $this.attr('href');
}
});
这是我的postuserWall函数
function postuserWall(){
var body = 'Usama New Post';
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
console.log(response);
alert('Error occured');
return false;
} else {
alert('Post ID: ' + response.id);
return true;
}
});
}
它没有等待postuserWall函数中的响应
答案 0 :(得分:1)
一种解决方案(确保您了解异步意味着什么,这在JavaScript中非常重要):
$('.vacancies_tbl').on('click', '.btn-edit-vacancy', function(e) {
e.preventDefault();
var $this = $(this);
postUserWall(function(check) {
alert(check);
if(check){
window.location = $this.attr('href');
}
});
});
function postUserWall(callback) {
var body = 'Usama New Post';
FB.api('/me/feed', 'post', {message: body}, function(response) {
if (!response || response.error) {
console.log(response);
alert('Error occured');
callback(false);
} else {
alert('Post ID: ' + response.id);
callback(true);
}
});
}
您也可以使用Promises,但这对于一次回调来说太过分了。