Подтвердить что ты не робот

Предоставляет Promise в качестве модуля экспортирует действительный шаблон для инициализации asynch в Node.js?

Мне нужно написать несколько модулей, которые загружают данные один раз, а затем предоставляют интерфейс для этих данных. Я хотел бы загрузить данные асинхронно. В моем приложении уже используется promises. Обеспечивает обещание в результате требования к модулю действительного шаблона/идиомы?

Пример модуля:

var DB = require('promise-based-db-module');

module.exports =
  DB.fetch('foo')
  .then(function(foo){
    return {
        getId: function(){return foo.id;},
        getName: function(){return foo.name;}
    };
  });

Пример использования:

require('./myPromiseModule')
.then(function(dataInterface){
  // Use the data
});

UPDATE:

Я использовал это какое-то время, и он отлично работает. Одна вещь, которую я узнал, и она намекала в принятом ответе, заключается в том, что хорошо кэшировать само обещание и всякий раз, когда вы хотите получить доступ к данным, используйте next. При первом доступе к данным код будет ждать разрешения обещания. Последующее использование next немедленно вернет данные. например.

var cachedPromise = require('./myPromiseModule');
cachedPromise.then(function(dataInterface){
  // Use the data
});
...
cachedPromise.then(function(dataInterface){
  // Use the data again somewhere else.
});
4b9b3361

Ответ 1

Это кажется идеальным интерфейсом для модуля, задачей которого является однократное получение некоторых данных.

Данные получены async, поэтому для этого есть смысл. Цель состоит в том, чтобы получить данные только один раз, а затем позволить всем местам, в которые этот модуль используется, просто иметь доступ к этим исходным данным. Обещание отлично подходит для этого, потому что это одноразовое устройство, которое запоминает его состояние.

Лично я не уверен, почему вам нужны методы getId() и getName(), когда вы можете просто предложить прямой доступ к свойствам, но они могут работать.

Недостатком этого интерфейса является то, что нет средств для запроса новой копии данных (недавно загруженных из БД).