gpt4 book ai didi

javascript - 同步调用另一个 javascript 函数中的函数

转载 作者:行者123 更新时间:2023-12-02 14:49:10 27 4
gpt4 key购买 nike

我正在尝试在 getUserAlbum 函数中调用 checkLoginStatus 函数,在 getUserAlbum 中我正在捕获 checkLoginStatus< 的响应返回 并代表该响应,我需要在 getUserAlbum 函数下工作。

但问题是这个 getUserAlbum 函数不会等待响应并执行我不想要的下一行。

这是我的功能:

   var accessToken = '';

checkLoginStatus = function () {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
accessToken = response.authResponse.accessToken;
console.log(accessToken + ' => in check login status');
return accessToken;
} else {
return false;
}
});
}

getUserAlbum = function () {
var token = checkLoginStatus();
console.log(token + ' => in get album function'); // it log undefined here that is why else part executes.
if(token) {
FB.api(
"/me/albums/", {'accessToken': token},
function (response) {
if (response && !response.error) {
console.log(response);
}
}
);
} else {
alert("You are not logged in");
}
}

有人可以帮我解决这个问题。

最佳答案

FB.getLoginStatus is asynchronous...Use callbacks as response from FB api will be asynchronous. You can not be certain when will it be received.

在收到响应之前,您的函数已执行并返回控制权,因此它将是未定义

回调中,您传递函数作为参数,稍后需要时将在程序中执行。

var accessToken = '';
var checkLoginStatus = function(callback) {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
accessToken = response.authResponse.accessToken;
callback(accessToken);
} else {
callback(false);
}
});
}
var getUserAlbum = function() {
checkLoginStatus(function(token) {
console.log(token + ' => in get album function'); // it log undefined here that is why else part executes.
if (token) {
FB.api(
"/me/albums/", {
'accessToken': token
},
function(response) {
if (response && !response.error) {
console.log(response);
}
}
);
} else {
alert("You are not logged in");
}
});
}

关于javascript - 同步调用另一个 javascript 函数中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com