Google People API Javascript - 将 GivenName 存储为变量



我在将Google API调用存储为变量时遇到了问题。我相信这与变量在 promise 函数中调用的事实有关,我知道一旦执行就不会传递给全局变量。当前代码的结果是"null",这是变量的初始值。

我删除了大部分代码以显示必要的摘录:

var MyApp {
   name: null
};
function makeApiCall() {
     gapi.client.people.people.get({
       'resourceName': 'people/me',
       'requestMask.includeField': 'person.names'
     }).then(
       function(resp) {
       MyApp.name = resp.result.names[0].givenName;
       return MyApp.name;
     });
}
function getIP(json) {
    makeApiCall();          
    var person = MyApp.name;
    document.write(person);
}

基本上,我希望 MyApp.name(脚本前面创建的全局变量)的值从"null"更改为 API 响应,以便 getIP(json) 中打印的值是给定的 Name 而不是 null,这是我当前的输出。

换句话说,当我在getIP(json)函数中引用 MyApp.name 时,它应该引用'resp.result.names[0].givenName'而不是'null'。

我已经在这个主题上搜索了一段时间,但除了知道什么不起作用之外没有任何成功。

通过这样做:

makeApiCall();          
var person = MyApp.name;
document.write(person);

您告诉 Javascript 将 Google API 调用排队,然后在等待请求完成之前立即使用结果。

此外,您不应该使用 document.write,因为它会用变量的内容替换整个文档,因为它将在文档呈现后调用。

试试这个:

gapi.client.people.people.get({
  'resourceName': 'people/me',
   'requestMask.includeField': 'person.names'
}).then(
  function(resp) {
    MyApp.name = resp.result.names[0].givenName;
    //Use MyApp.name here and don't use document.write
  });

最新更新