您好我正在尝试将yelp api集成到我的角度应用中。
var params = {
callback: 'angular.callbacks._0',
location: 'San+Francisco',
oauth_consumer_key: 'xxxxxxx', //Consumer Key
oauth_token: 'xxxxxxxxxxxx', //Token
oauth_signature_method: 'HMAC-SHA1',
oauth_timestamp: new Date().getTime(),
oauth_nonce: Math.random().toString(36).substring(7),
term: 'Itailian',
limit: 5
};
var consumerSecret = 'xxxxxxxxxxxxxx';
var tokenSecret = 'xxxxxxxxxxx';
function generateSignature(method, yelpURL, params, consumerSecret, tokenSecret) {
return oauthSignature.generate(method, yelpURL, params, consumerSecret, tokenSecret, {encodeSignature: false});
}
params['oauth_signature'] = generateSignature(method, yelpURL, params, consumerSecret, tokenSecret);
//Doest work even if I push below call in array and then do $q.all(promisesArra).
var defered = $q.defer();
$http.jsonp(yelpURL, {params: params})
.success(function (data) {
defered.resolve(data);
$localStorage[cusine] = data;
})
.error(function (error) {
console.log('failed', error);
});
return defered.promise;
我想针对不同的术语进行多次调用示例:意大利语,墨西哥语,.. 我可以进行一次jsonp调用但不是多次调用。
我不确定这个问题。我猜这是因为angular中的回调是硬编码的,只能是angular.callbacks._0
答案 0 :(得分:0)
$http.jsonp
已经返回了一个承诺,因此无需使用$q.defer()
。此外,自{1.4}起,$http.success
和$http.error
为depreciated。相反,使用then()
来解决您的承诺:
$http.jsonp(yelpURL, params).then(
function (data) { // successcallback
$localStorage[cusine] = data;
}, function (error) { // errorcallback
console.log(error);
});
这是一个有效的jsfiddle:http://jsfiddle.net/saarmstrong/hYACX/8/light/