2017-10-14 11 views
0

최근에 hubot을 설치하고 테스트 중입니다.response.send understanding? (hubot-script)

이제 나는 sth를 보았습니다. 이해가 안 :이 코드 (hubot-maps의 일부 - maps.coffee file)을 감안할 때

내가 얻을이

enter image description here

같은 응답을받을 수 있나요 왜

robot.respond /(?:(satellite|terrain|hybrid)[- ])?map(me)? (.+)/i, (msg) -> 
mapType = msg.match[1] or "roadmap" 
location = encodeURIComponent(msg.match[3]) 
mapUrl = "http://maps.google.com/maps/api/staticmap?markers=" + 
      location + 
      "&size=400x400&maptype=" + 
      mapType + 
      "&sensor=false" + 
      "&format=png" # So campfire knows it's an image 
url  = "http://maps.google.com/maps?q=" + 
      location + 
      "&hl=en&sll=37.0625,-95.677068&sspn=73.579623,100.371094&vpsrc=0&hnear=" + 
      location + 
      "&t=m&z=11" 

msg.send mapUrl 
msg.send url 

먼저 url을 입력 한 다음 mapUrl?

나는 mapUrl 먼저 얻을 것으로 기대하고 Hubot는 비동기 msg.send의 실행, 그래서 보장하기 위해이없는 것처럼 다음 this hubot PR에서 url

답변

2

, 그것은 보인다.

이제는 리스너가 비동기 적으로 실행됩니다. message.done 주변의 동작은 동일하게 유지되어야합니다 (message.done이 처리 될 때까지 이 참일 때까지 처리).

당신이 url 전에 mapUrl을 원하는 경우에, 당신은 주문 문자열 목록을 받아들이는 source code에서 송신 기능에 좀 걸릴 수 있습니다.

// Public: Posts a message back to the chat source 
// 
// strings - One or more strings to be posted. The order of these strings 
//   should be kept intact. 
// 
// Returns nothing. 
send (/* ...strings */) { 
    const strings = [].slice.call(arguments) 
    this.runWithMiddleware.apply(this, ['send', { plaintext: true }].concat(strings)) 
} 
+0

굉장 !! 고맙습니다!!! 나는 JS에서 매우 프로가 아니다. msg.sen (mapUrl, url)을 호출했지만 오류가 발생했습니다. 저를 도울 수 있습니까? –