我正在尝试将以下ES6脚本转换为带扣脚本,但我终生无法弄清楚如何在带扣脚本中创建“关闭”
import {Socket,Presence} from "phoenix"
let socket = new Socket("/socket",{
params: {user_id: window.location.search.split("=")[1]}
})
let channel = socket.channel("room:lobby",{})
let presence = new Presence(channel)
function renderOnlineUsers(presence) {
let response = ""
presence.list((id,{metas: [first,...rest]}) => {
let count = rest.length + 1
response += `<br>${id} (count: ${count})</br>`
})
document.querySelector("main[role=main]").innerHTML = response
}
socket.connect()
presence.onSync(() => renderOnlineUsers(presence))
channel.join()
我无法明确指出的部分是let response = ""
(或var,在这种情况下,因为扣脚本始终使用var
s)
function renderOnlineUsers(presence) {
let response = ""
presence.list((id,...rest]}) => {
let count = rest.length + 1
response += `<br>${id} (count: ${count})</br>`
})
document.querySelector("main[role=main]").innerHTML = response
}
到目前为止,我获得的最接近值不包括result
声明
...
...
let onPresenceSync ev =
let result = "" in
let listFunc = [%raw begin
{|
(id,...rest]}) => {
let count = rest.length + 1
result += `${id} (count: ${count})\n`
}
|}
end
] in
let _ =
presence |. listPresence (listFunc) in
[%raw {| console.log(result) |} ]
...
...
编译为:
function onPresenceSync(ev) {
var listFunc = (
(id,...rest]}) => {
let count = rest.length + 1
result += `${id} (count: ${count})\n`
}
);
presence.list(listFunc);
return ( console.log(result) );
}