Promesse.n'est pas une fonction de traitement de plusieurs appels d'API de Réagir

Je suis en utilisant réagir-sélectionnez à l'auto-complétion des options dans une barre de recherche. La barre de recherche affiche les résultats dans une des deux catégories, en fonction de l'API de point de terminaison, il frappe.

Pour l'instant, elle fonctionne avec des données à partir d'un point ou l'autre, mais je vais avoir du mal à revenir de données à partir de deux points de terminaison de réagir-sélectionnez la loadOptions paramètre.

De cette réponse sur plusieurs appels d'API, j'ai décidé d'utiliser promet de revenir toutes les données à la fois, mais je reçois l'erreur Uncaught TypeError: promise.then is not a function at Async.loadOptions

Voici mon code pour loadOptions:

const getAsync = (tripId, destinationIndex, input) => {
  if (!input) {
    return { options: [] }
  }

  function getMusement(input) {
    return new Promise(function(resolve, reject) {
      TVApi.musement.autocomplete(input)
        .then((m) => {
          const musementOptions = m.map(musementToOption).slice(0, 4)
          return resolve(musementOptions)
        })
    })
  }

  function getFourSquare(tripId, destinationIndex, input) {
    return new Promise(function(resolve, reject) {
      TVApi.spot.autocomplete(tripId, destinationIndex, input)
        .then((fs) => {
          const fsOptions = fs.map(spotToOption).slice(0, 4)
          return resolve(fsOptions)
        })
    })
  }

  return Promise.all([getMusement(input), getFourSquare(tripId, destinationIndex, input)])
    .then((allData) => {
      const merged = [].concat.apply([], allData)
      console.log(JSON.stringify(merged)) //logs out with correct data
      return {options: merged}
    })
}
Éviter les Promise constructeur antipattern!
ne TVApi.musement.la saisie semi-automatique renvoie une promesse?
En ligne en particulier? Êtes-vous sûr que le TVApi méthodes ne renvoient toujours des promesses?
Comment ferais-je sans elle?
Vous devriez juste écrire function getMusement(input) { return TVApi.musement.autocomplete(input).then(m => { … return musementOptions }) } (et de même pour getFourSquare)

OriginalL'auteur crash springfield | 2017-05-11