2016-01-08 6 views
3

Когда я прокомментирую приведенный ниже код, представленный ниже, представление в API slack работает, как ожидалось. Однако, когда я пытаюсь обработать представление в команде потока, представление никогда не проходит.нить в компоненте, написанном на скрипте, не работает

Я что-то не так? Бег в Railo 4

// push to slack! 
public function push(options = {}) { 

    var http = new http(); 
    var data = { 
     "text": "Default message", 
     "channel": "activity" 
    }; 

    structAppend(data, options); 

    // thread 
    // action="run" { 

     sleep(5000); 

     http.setMethod("post"); 
     http.setUrl(variables.slackWebhookUrl); 
     http.addParam(
      type = "formField", 
      name = "payload", 
      value = serializeJson(data) 
     ); 

     http.send(); 

    // } 

} 
+0

Вам не нужно называть свою нить? –

+0

Что вы смотрите на это, вы думаете, что представление не проходит? –

+0

Спасибо, ребята. Я пробовал это и без атрибута имени. Согласно cfdocs атрибут name не требуется. Я просматриваю свой канал Slack на myapp.slack.com, чтобы подтвердить, не обработано ли подача. Без потока, мгновенно сообщения, с ним, ничего. –

ответ

2

Кредит идет к Адаму Камерону, указывая мне в правильном направлении. Как выясняется, scoping is quite tricky with cfthreads.

Ради краткости, я просто скажу, что я буду следовать этим правилам при использовании потоков в будущем:

  1. не ссылаются на какие-либо переменные из областей за пределами «потока блока»
  2. явно перейти в поток каких-либо данных «родительской области», вы должны ссылаться на
  3. в основном относятся к cfthread как cfmodule (передает данные через атрибуты)

Это работает треска e:

// push to slack! 
    public function push(options = {}) { 

     var data = { 
      "text": "Default message", 
      "channel": "activity" 
     }; 

     structAppend(data, options); 

     thread 
      action="run" 
      data="#data#" 
      slackUrl="#variables.slackWebhookUrl#" { 

      var http = new http(); 

      http.setMethod("post"); 
      http.setUrl(attributes.slackUrl); 
      http.addParam(
       type = "formField", 
       name = "payload", 
       value = serializeJson(attributes.data) 
      ); 

      http.send(); 

     } 

    } 

 Смежные вопросы

  • Нет связанных вопросов^_^