gpt4 book ai didi

google-authentication - GoogleAuth 库加载 promise

转载 作者:行者123 更新时间:2023-12-04 17:58:32 25 4
gpt4 key购买 nike

我正在尝试使用 promises 加载 google 身份验证库,但是当我尝试调用 gapi.auth2.getAuthInstance() 并在 promise 中返回时我失败了;

我是这样做的:

var loadPlatform = function ($q) {
var deferred = $q.defer(),
platform = document.createElement('script');

platform.src ='https://apis.google.com/js/platform.js';
platform.type = 'text/javascript';
platform.async = true;
platform.defer = true;
platform.onload = deferred.resolve;
platform.onerror = deferred.reject;

document.body.appendChild(platform);

return deferred.promise;
};

//I return this from other function
return loadPlatform($q)
.then(function () {
var deferred = $q.defer();

gapi.load('auth2', function () {
deferred.resolve(gapi.auth2);
});

return deferred.promise;
})
.then(function (auth2) {
//This function retuns Promise
//https://developers.google.com/identity/sign-in/web/reference#gapiauth2initparams
return auth2.init(params);
})
.then(function (GoogleAuth) {
//Here I should have solved GoogleAuth object
});

一切正常,直到我返回 auth2.init(params) 然后浏览器卡住。这里发生了什么?

最佳答案

我刚遇到同样的问题。

您似乎无法链接 auth2 对象的 init() promise。

我不得不环绕它以避免浏览器卡住。

return new Promise<void>(resolve => {
gapi.auth2.init({
client_id: this._clientId,
scope: 'profile'
}).then(() => resolve());
})

同样有趣的是,我无法直接应用 resolve 函数。

.then(resolve);

更新

如上所述,init() 调用的返回对象不是一个 promise ,它是一种包装器,只有在您调用后才返回一个真正的 promise .then 方法

enter image description here

return gapi.auth2.init({
client_id: this._clientId,
scope: 'profile'
}).then();
// Auth2 only returns a promise, when we chained into the PromiseLike object once.

关于google-authentication - GoogleAuth 库加载 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322141/

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