Angularjs Многократный вызов JSONP с обещаниями

0

Привет, я пытаюсь интегрировать 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

  • 0
    попробуйте использовать .then вместо .success
Теги:

1 ответ

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/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню