2017-02-09 2 views
0

Ich bin neu in Javascript Build-Stack. Tut mir leid, wenn mein Fragetitel anderen Fragen ähnlich scheint, aber ich habe keinen gefunden, der meine Frage beantwortet.Verwendung von superagenten Ajax-Bibliothek in Node.js

Derzeit Lernen + Redux Reagieren und nach diesem Tutorial: https://thinkster.io/tutorials/react-redux-ajax-middleware

Hier ist der Code in Frage:

'use strict'; 

import superagentPromise from 'superagent-promise'; 
import _superagent from 'superagent'; 

const superagent = superagentPromise(_superagent, global.Promise); 

const API_ROOT = 'https://conduit.productionready.io/api'; 

const responseBody = res => res.body; 

const requests = { 
    get: url => 
    superagent.get(`${API_ROOT}${url}`).then(responseBody) 
}; 

const Articles = { 
    all: page => 
    requests.get(`/articles?limit=10`) 
}; 

export default { 
    Articles 
}; 

Die eigentlichen Fragen:

  1. Warum superagent-promise verwenden? Nicht superagent hat dies angegeben:

    ES6 Versprechen werden unterstützt. Statt .end() können Sie .then() nennen

  2. Woher kommt diese global.Promise kommen aus? Ich habe nichts wie global.Promise = require('some-promise-library') schreiben und AFAIK Knoten hat keine Standard global.Promise. Was fehlt mir hier?

Antwort

0

Es sieht aus wie Sie diese auf dem Server verwenden. Angenommen, Sie verwenden keine super alte Version von Node wie 0.10, dann hat Promise-Unterstützung.

Das Superagenten-Versprechen war früher Pflicht - mit der neuesten Version von Superagent ist es nicht mehr. Verwenden Sie einfach Superagenz selbst und nutzen Sie die integrierte Versprechensunterstützung.

Wenn Sie Superagenten auf dem Client verwenden müssen, dann wird jedes Versprechen Polyfill funktionieren, um ältere Browser (z. B. Babel-Polyfill) zu unterstützen.

+0

Ja, ich benutze keine super alte Version von Node (habe die genaue Version vergessen, und ich bin jetzt nicht auf meinem Dev-Rechner, tut mir leid). Also, 'global.Promise' ist eigentlich die Promise-Unterstützung von Node? Noch eine Frage, wie erkennst du, dass ich das auf dem Server verwende?Ich bin ein Knoten Neuling –

+0

Die Verwendung von 'global', die nicht in einem Browser vorhanden ist. –

-1
  1. Wenn Sie die Superagent mit Versprechen Unterstützung nutzen möchten, müssen Sie diese Superagent-Versprechen Wrapper-Modul. Das ist alles

  2. Promise wird nativ von Node.js unterstützt und ist global verfügbar.
    Alle globalen Objekte sind verfügbar, ohne sie wie Prozess, setTimeout usw. zu laden. Sie können Promise ohne global verwenden, wenn Sie das native Promise verwenden.

    Object.prototype.hasOwnProperty.call (global, Promise ') Diese Funktion gibt wahr

+0

Sie benötigen keine Super-Versprechen, um Unterstützung für Superagenz zu haben, wenn Sie ES6 verwenden. – therewillbecode

+0

Superagent ist ein Knotenmodul, also widersprichst du dir nicht selbst, wenn du sagst, dass du eine zusätzliche Bibliothek benötigst, um Unterstützung bei der Verwendung von Superagenten zu haben? – therewillbecode

+0

Nun ... werfen Sie einen Blick auf diese npm [Link] (https://www.npmjs.com/package/superagent-promise) es sagt Versprechen Wrapper für Superagenten. Sie müssen sich direkt auf superagent und Ihre Lieblings-Promise-Bibliothek verlassen. Also was denkst du? – Mia

Verwandte Themen