Вызовите функцию Coffeescript с помощью.lazy() из sugar.js

Я хотел бы вызвать функцию Coffeescript несколько раз. Поскольку вычисления потребляют около 100 процессоров, я хочу использовать sugar.js "lazy ()"

http://sugarjs.com/api/Function/lazy

Итак, мой цикл событий Node.js должен иметь достаточно времени, чтобы заняться другими делами. В настоящее время следующий код блокирует весь цикл обработки событий на несколько секунд:

results = (Item.expensiveCalculation(element) for element in list)

где список - это массив элементов (неважно, что), а метод - что-то вроде:

class Item
  this.expensiveCalculation = (arg) -> 
  // do stuff and return a result

Примечание: это использовать кофейный компилятор (версия 1.6) с --bare флаг по какой-то причине.

Какой бы синтаксис я ни пробовал до сих пор, каждый раз, когда мне кричат, что.lazy() не определен ни для функции, ни для объекта.

Образцы, которые не работают:

results = (Item.expensiveCalculation(element) for element in list).lazy(5)
results = (Item.expensiveCalculation(element).lazy(5) for element in list)
results = ((=> Item.expensiveCalculation(element)).lazy(5) for element in list)

Сахар правильно установлен через npm и требуется через window.sugar = require "sugar" прежде чем что-то делать. Если это имеет значение, я использую node-webkit для своего приложения.

Есть идеи?

1 ответ

Я думаю, что вы ищете

fn = Item.expensiveCalculation.lazy 5
results = (fn element for element in list)

определить вашу функцию следующим образом:

class Item
  expensiveCalculation: (arg) => ...
Другие вопросы по тегам