var express = require ('express'); var app = express (), что такое express () ?? это метод или конструктор? Откуда это взялось

Когда вы вызываете GetAllAnimals, он фактически не выполняет какой-либо код, пока вы не перечислите возвращаемый IEnumerable в цикле foreach.

DataContext удаляется, как только метод оболочки возвращается, перед вами перечислите IEnumerable.

Простейшим решением было бы сделать метод-оболочку итератором, как это:

public static IEnumerable<Animal> GetAllAnimals() {
    using (AnimalDataContext dataContext = new AnimalDataContext()) {
        foreach (var animalName in dataContext.GetAllAnimals()) {
            yield return GetAnimal(animalName);
        }
    }
}

Таким образом, оператор using будет скомпилирован в внешний итератор, и он будет удален только при размещении внешнего итератора.

Другим решением было бы перечислить IEnumerable в обертке. Самый простой способ сделать это - вернуть List<Animal>, например:

public static IEnumerable<Animal> GetAllAnimals() {
    using (AnimalDataContext dataContext = new AnimalDataContext()) {
        return new List<Animal>(dataContext.GetAllAnimals());
    }
}

Обратите внимание, что это теряет преимущество отсроченного исполнения, поэтому оно получит всех животных, даже если вы Они нуждаются в них.

21
задан sreesreenu 22 December 2014 в 09:11
поделиться

1 ответ

Каждый раз, когда Вы импортируете модуль как

const express = require('express')

, экспресс является модулем с функциями или объектами или переменными, присвоенными ему. смотрите на/lib/express

, Вы в состоянии получить доступ к функции createApplication в специальном модуле как [1 118] экспресс () , потому что функция присвоена непосредственно модулю как

экспорт = module.exports = createApplication;

function createApplication(){
    var app = function(req, res, next) {
    app.handle(req, res, next);
  };
//other codes
}

, таким образом, Вы в состоянии получить доступ к функции createApplication, просто назвав экспресс () как функция

теперь при проверке другого раздела специальной библиотеки Вы видите набор других объектов, присоединенных к специальному объекту экспорта также.

/**
 * Expose the prototypes.
 */

exports.application = proto;
exports.request = req;
exports.response = res;

/**
 * Expose constructors.
 */

exports.Route = Route;
exports.Router = Router;

 // other exports

к этим объектам или функции, присвоенной для экспорта специального объекта, можно получить доступ от раздела импорта с помощью экспресса в качестве объекта.

экспресс. {Имя}

express.Route
express.Router etc

В конце, Вы просто экспортируете набор методов или объектов, которые присоединены к module.export специальному объекту в, выражает js файл

для чтения больше на module.export специальном объекте, идут сюда

0
ответ дан Shersha Fn 16 October 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: