如何使用 javascript 或 jquery 等待 facebook javascript api 响应

How to wait for the facebook javascript api response using javascript or jquery

我希望我的 postuserWall() 函数等待 FB.api 响应然后它 return true 或 false.but 它不等待响应。 我怎样才能让它等待响应 这是我的主要功能,它正在调用警报显示给我的 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 函数中的响应

一个解决方案(确保您了解异步的含义,这在 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,但这对于一个回调来说太过分了。