Привет, я пытаюсь интегрировать 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, но не несколько.
Я не уверен в этом вопросе. Думаю, это потому, что обратный вызов в угловом формате жестко закодирован и может быть только угловым.callbacks._0
$http.jsonp
уже возвращает обещание, поэтому нет необходимости использовать $q.defer()
. Кроме того, $http.success
и $http.error
были амортизированы с версии 1.4.4. Вместо этого используйте 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/
.then
вместо.success