问gapi.client.load是否返回承诺的问题已经讨论here。当Mike Witt回答时,代码:
gapi.client.load('guestbook', 'v1', undefined, '/_ah/api');
返回承诺,但没有任何错误回调函数。
我试图处理错误:
gapi.client.load('guestbook', 'v1', undefined, '/_ah/api')
.then(
function() {
//success
},
function(error) {
//error
}
);
当我关闭端点模块时,它将永远不会进入错误处理程序。我只在控制台中收到以下错误:
GET http://localhost:8080/_ah/api/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-s…3DIQ%2Frt%3Dj%2Fd%3D1%2Ft%3Dzcms%2Frs%3DAGLTcCOu-PQv0yFB8pB9mX2w3nuej8rl5Q net::ERR_CONNECTION_REFUSED cb=gapi.loaded_0:163
有没有办法处理这个错误?我试图在文档中找到它,但没有成功。
答案 0 :(得分:3)
过了一段时间我找到了答案:
gapi.client.load('guestbook', 'v1', undefined, '/_ah/api')
.then(
function(response) {
if(response && response.hasOwnProperty('error')) {
// error
} else {
// success
}
}
);
如果出现某些错误, gapi.client.load 会返回一个错误对象,例如:
{error: {errors: Array[1], code: 404, message: "Not Found"}}
但必须在 .then()中“捕获”而不是 .catch()
答案 1 :(得分:1)
您可以轻松测试失败(至少现在)。我很确定这就是你要找的东西。
以下是代码:
gapi.client.init({}).then(() => {
gapi.client.load('some-api', "v1", (err) => { callback(err) }, "https://someapi.appspot.com/_ah/api");
}, err, err);
function callback(loadErr) {
if (loadErr) { err(loadErr); return; }
// success code here
}
function err(err){
console.log('Error: ', err);
// fail code here
}
答案 2 :(得分:0)
此方法的语法为:gapi.client.load(API_NAME,API_VERSION,CALLBACK);
你可以看看[1],这个stackoverflow问题也可以帮助你[2]。
'/ _ ah / api'不能用作回调,因为它是用于测试和查看Google App API的特定处理程序,例如在为移动应用程序使用端点时。