使用javascript, Facebook值不会从一个函数传递到另一个函数

Facebook values not being passed from one function to the other using javascript

本文关键字:函数 一个 另一个 Facebook javascript 使用      更新时间:2023-09-26

我有以下javascript:

function graphStreamPublish(){
    FB.api('/me/feed', 'post', 
    {
        message     : "1",
        link        : "2",
        picture     : "3",
        name        : "4",
        description : "5"
    }, 
    function(response) {        
        if (!response || response.error){
            alert('Error occured');
        }else{
            var x = fqlQuery();
            console.log(x);
            alert('Post ID: ' + response.id);
        }
    });
}
function fqlQuery(){
    FB.api('/me', function(response) {
        var query = FB.Data.query('select name, profile_url from user where uid={0}', response.id);
        query.wait(function(rows) {
            var x=rows[0].name;
            var y=rows[0].profile_url;
            return [x, y]; 
         });
    });
}

基于以下代码:

http://thinkdiff.net/facebook/new-javascript-sdk-oauth-2-0-based-fbconnect-tutorial/

问题是,当函数graphStreamPublish()运行时,它反过来也执行fqlQuery,现在graphStreamPublish中返回的值在控制台中显示为未定义。请任何人帮助我从fqlQuery返回到graphStreamPublish的值。

请注意,当我在函数fqlQuery中console.log(行)时,肯定有从FB返回的值。

谢谢

你不能这样做。你在做:

var x = fqlQuery();

但是fqlQuery没有返回任何东西。你的返回语句在回调中,这是一个完全不同的方法:

function(rows) {
   var x=rows[0].name;
   var y=rows[0].profile_url;
   return [x, y]; 
}

这就是为什么你的方法返回是未定义的。在调用fqlQuery()和调用回调之间会经过一段时间。您必须在fqlQuery

的回调中进行所需的处理。