如何在另一个功能中调用此响应?这是我的代码
function queryCoreReportingApi(profileId) {
// Query the Core Reporting API for the number sessions for
// the past seven days.
gapi.client.analytics.data.ga.get({
'ids': 'ga:' + profileId,
'start-date': '7daysAgo',
'end-date': 'yesterday',
'metrics': 'ga:pageviews',
'dimensions' : 'ga:date'
})
.then(function(response) {
console.log(response);
})
.then(null, function(err) {
// Log any errors.
console.log(err);
});
}
我想将此函数的响应传递给另一个函数。
例如:
$scope.sample = function(){
//call the response of function queryCoreReportingApi
};
答案 0 :(得分:0)
从您的问题来看,背景并不完全清楚,但无论如何我都会采取行动。
首先,在回答您的问题之前,我担心您的代码在上面形成的方式 - 特别是您链接的两个.then()
块。虽然我不知道您正在使用的特定API,但通常承诺类型API允许.then()
方法传递两个参数 - 第一个是在promise成功时调用的函数,第二个函数是在出错的情况下被调用。所以我怀疑你打算输入的可能是:
function queryCoreReportingApi(profileId) {
// Query the Core Reporting API for the number sessions for
// the past seven days.
gapi.client.analytics.data.ga.get({
'ids': 'ga:' + profileId,
'start-date': '7daysAgo',
'end-date': 'yesterday',
'metrics': 'ga:pageviews',
'dimensions' : 'ga:date'
})
.then(function(response) {
console.log(response);
},
function(err) {
// Log any errors.
console.log(err);
});
}
这只是预感,但我认为你应该检查一下。
现在关于您提出的问题 - 除非我遗漏了一些重要信息,您应该能够访问与queryCoreReportingApi
方法相同的范围(或更高)中可用的任何方法并将其传递给来自.then
的成功方法的回复。例如:
function myCustomFunction(data) {
//do some stuff with the data
}
function queryCoreReportingApi(profileId) {
// Query the Core Reporting API for the number sessions for
// the past seven days.
gapi.client.analytics.data.ga.get({
'ids': 'ga:' + profileId,
'start-date': '7daysAgo',
'end-date': 'yesterday',
'metrics': 'ga:pageviews',
'dimensions' : 'ga:date'
})
.then(function(response) {
console.log(response);
myCustomFunction(response);
},
function(err) {
// Log any errors.
console.log(err);
});
}
这是否回答了你的问题?如果没有,请提供更多详细信息。
编辑:我在上面的编辑中看到,您似乎在使用Angular。在这种情况下,我也猜测你提供的粘贴方法是在从控制器调用的服务中。如果是这种情况,您可以扩展queryCoreReportingApi
方法以接受回调方法作为第二个参数,以便在成功时调用,如下所示:
// in your controller
$scope.sample = function (data) {
// manipulate the returned data
}
// call the service
myReportingService.queryCoreReportingApi(profileId, $scope.sample);
然后,在您的服务中:
//in your service
function queryCoreReportingApi(profileId, callback) {
// Query the Core Reporting API for the number sessions for
// the past seven days.
gapi.client.analytics.data.ga.get({
'ids': 'ga:' + profileId,
'start-date': '7daysAgo',
'end-date': 'yesterday',
'metrics': 'ga:pageviews',
'dimensions' : 'ga:date'
})
.then(function(response) {
console.log(response);
callback(response);
},
function(err) {
// Log any errors.
console.log(err);
});
}
(我也确实看到你指的是“呼唤”成功的反应。这种情况表明,回应本身就是你想要调用的方法。我认为这只是你的错误,但是如果是这种情况,就像收到它时一样简单,就像这样:
.then(function(response) {
response();
});
但我怀疑这就是你的意思。)