2015-09-06 1 views
0

В примерах (насколько я могу судить, возможно, я пропустил некоторые тонкости в примерах маршрутизатора), исходные значения возвращаются из функции get. Есть ли способ вернуть обратный вызов или обещание в функции get? Каков наилучший способ сделать это?Поддерживает ли маршрутизатор FalcorJS возврат обещаний?

На данный момент, я предполагаю, что я использую Q.defer?

ответ

2

Примеры документации Фалькора : с использованием обещаний. Например:

{ 
    route: 'user.["name", "surname"]', 
    get: function(pathSet) { 
     // pathSet is ["user", ["name"]] or ["user", ["surname"]] or ["user", ["name", "surname"]] 
     if (this.userId == null) { 
      throw new Error("not authorized"); 
     } 
     return userService. 
      get(this.userId). 
      then(function(user) { 
       // pathSet[1] is ["name"] or ["surname"] or ["name", "surname"] 
       return pathSet[1].map(function(key) { 
        return { path: ["user", key], value: user[key] }; 
       }); 
      }); 
    } 
} 

userService.get возвращается обещание и не является непосредственно расходным значение. Так что все, что соответствует спецификации обещания, будет делать.

+0

Хорошо, может быть, я неправильно понял что-то довольно основное. Я поражаю ElasticSearch, и я пытаюсь вернуться из его функции, но функция get Router продолжает работать. То, что мне нужно сделать, это использовать отложенное решение после возврата Elastic, а затем вернуть обещанное значение из Router.get. Если я не использую отложенную, то код продолжает работать и не возвращается в elastic.get(). Then(). –