本文整理汇总了TypeScript中@statecraft/core.setSingle函数的典型用法代码示例。如果您正苦于以下问题:TypeScript setSingle函数的具体用法?TypeScript setSingle怎么用?TypeScript setSingle使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了setSingle函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: while
;(async () => {
while (shouldReconnect) {
console.log('... trying to reconnect ...')
let r: TinyReader<N.SCMsg>, w: TinyWriter<N.CSMsg>
let netConnected = false
try {
setSingle(status, 'connecting')
;[r, w] = await connect()
netConnected = true
} catch (e) {
console.warn('Reconnection failed', e.message)
}
if (netConnected) try {
console.log('createStore')
await createStore(r!, w!, {
...opts,
restoreFrom: innerStore!,
syncReady(store) {
// Ok, we've reconnected & gotten our hello message.
// We have to initialize here to avoid an event loop frame
// where innerStore is set incorrectly.
innerStore = store
setSingle(status, 'connected')
console.warn('Reconnected')
}
})
break
} catch (e) {
// TODO: Consider calling reject instead of resolve here - so the
// error makes an exception by default.
if (e instanceof err.StoreChangedError) {
console.log('uid changed')
w!.close()
uidChanged.reject(e)
break
} else throw e
}
setSingle(status, 'waiting')
await wait(5000)
console.log('done waiting')
}
})()
示例2: setSingle
.then(initialStore => {
innerStore = initialStore
setSingle(status, 'connected')
// This is basically a proxy straight to innerStore.
const s: I.Store<Val> = {
storeInfo: initialStore.storeInfo,
fetch(...args) { return innerStore!.fetch(...args) },
getOps(...args) { return innerStore!.getOps(...args) },
mutate(...args) { return innerStore!.mutate(...args) },
subscribe(...args) { return innerStore!.subscribe(...args) },
close() {
shouldReconnect = false
innerStore!.close()
innerStore = null // Error if we get subsequent requests
setSingle(status, 'closed')
// ... And stop reconnecting.
}
}
resolve(s)
}, reject)
示例3: inputPortData
access.onstatechange = e => {
// Print information about the (dis)connected MIDI controller
const {port} = e
const set = port.type === 'input' ? data.inputs : data.outputs
const deviceIdx = set.findIndex(({id}) => id === port.id)
if (deviceIdx >= 0) {
set[deviceIdx].state = port.state
} else {
set.push(port.type === 'input' ? inputPortData(port) : portData(port))
if (port.type === 'input') subscribeToInput(port as WebMidi.MIDIInput, set.length-1)
}
setSingle(localStore, data)
// console.log('onstatechange', e.port.name, e.port.manufacturer, e.port.state);
// console.log(e.port.type)
}
示例4: Promise
const ready: Promise<I.Store<Val>> = new Promise((resolve, reject) => {
const opts: ClientOpts<Val> = {
preserveState: true,
onClose() {
// We don't clear innerStore yet - all requests will still go there
// until we change the guard.
setSingle(status, 'waiting')
// This is pretty rough.
;(async () => {
while (shouldReconnect) {
console.log('... trying to reconnect ...')
let r: TinyReader<N.SCMsg>, w: TinyWriter<N.CSMsg>
let netConnected = false
try {
setSingle(status, 'connecting')
;[r, w] = await connect()
netConnected = true
} catch (e) {
console.warn('Reconnection failed', e.message)
}
if (netConnected) try {
console.log('createStore')
await createStore(r!, w!, {
...opts,
restoreFrom: innerStore!,
syncReady(store) {
// Ok, we've reconnected & gotten our hello message.
// We have to initialize here to avoid an event loop frame
// where innerStore is set incorrectly.
innerStore = store
setSingle(status, 'connected')
console.warn('Reconnected')
}
})
break
} catch (e) {
// TODO: Consider calling reject instead of resolve here - so the
// error makes an exception by default.
if (e instanceof err.StoreChangedError) {
console.log('uid changed')
w!.close()
uidChanged.reject(e)
break
} else throw e
}
setSingle(status, 'waiting')
await wait(5000)
console.log('done waiting')
}
})()
},
}
setSingle(status, 'connecting')
connect()
.then(([r, w]) => createStore(r, w, opts))
.then(initialStore => {
innerStore = initialStore
setSingle(status, 'connected')
// This is basically a proxy straight to innerStore.
const s: I.Store<Val> = {
storeInfo: initialStore.storeInfo,
fetch(...args) { return innerStore!.fetch(...args) },
getOps(...args) { return innerStore!.getOps(...args) },
mutate(...args) { return innerStore!.mutate(...args) },
subscribe(...args) { return innerStore!.subscribe(...args) },
close() {
shouldReconnect = false
innerStore!.close()
innerStore = null // Error if we get subsequent requests
setSingle(status, 'closed')
// ... And stop reconnecting.
}
}
resolve(s)
}, reject)
})