Вызовите функцию 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) => ...