本文整理匯總了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)
})