本文整理汇总了TypeScript中common/butlerd.call函数的典型用法代码示例。如果您正苦于以下问题:TypeScript call函数的具体用法?TypeScript call怎么用?TypeScript call使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了call函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: async
watcher.on(actions.addInstallLocation, async (store, action) => {
const { window } = action.payload;
const i18n = store.getState().i18n;
const nativeWindow = getNativeWindow(store.getState(), window);
if (!nativeWindow) {
return;
}
const dialogOpts = {
title: t(i18n, ["prompt.install_location_add.title"]),
// crazy typescript workaround, avert your eyes
properties: ["openDirectory", "createDirectory"] as (
| "openDirectory"
| "createDirectory")[],
};
const promise = new ItchPromise<string>((resolve, reject) => {
const callback = (response: string[]) => {
if (!response) {
return resolve();
}
return resolve(response[0]);
};
dialog.showOpenDialog(nativeWindow, dialogOpts, callback);
});
const path = await promise;
if (path) {
await call(messages.InstallLocationsAdd, { path });
store.dispatch(actions.installLocationsChanged({}));
}
});
示例2: call
export async function mcall<Params, Res>(
rc: RequestCreator<Params, Res>,
params: {} & Params,
setup?: SetupFunc
): Promise<Res> {
return await call(store, logger, rc, params, setup);
}
示例3: call
(async () => {
try {
let navigated = false;
await call(messages.FetchGame, { gameId }, async client => {
client.onNotification(messages.FetchGameYield, ({ params }) => {
if (navigated) {
return;
}
navigated = true;
const { game } = params;
store.dispatch(
actions.navigateToGame({ game, window: "root" })
);
});
});
} catch (e) {
store.dispatch(
actions.statusMessage({ message: `Game ${gameId} not found` })
);
}
})().catch(e => {
示例4: async
watcher.on(actions.scanInstallLocations, async (store, action) => {
let names: string[] = [];
let widgetParams: IScanInstallLocationsParams = {
progress: 0.00001,
game: null,
};
const openModal = actions.openModal(
modalWidgets.scanInstallLocations.make({
window: "root",
title: ["preferences.scan_install_locations.title"],
message: "",
buttons: [
{
label: ["prompt.action.close"],
className: "secondary",
},
],
widgetParams,
unclosable: true,
})
);
store.dispatch(openModal);
const modalId = openModal.payload.id;
const update = () => {
store.dispatch(
actions.updateModalWidgetParams(
modalWidgets.scanInstallLocations.update({
id: modalId,
widgetParams,
})
)
);
};
try {
const importRes = await call(
messages.InstallLocationsScan,
{},
client => {
client.onNotification(messages.Progress, async ({ params }) => {
// TODO: relay ETA too?
widgetParams.progress = params.progress;
update();
});
client.onNotification(
messages.InstallLocationsScanYield,
async ({ params }) => {
names.push(params.game.title);
widgetParams.game = params.game;
update();
}
);
client.onRequest(
messages.InstallLocationsScanConfirmImport,
async ({ params }) => {
const res = await promisedModal(
store,
modalWidgets.naked.make({
window: "root",
title: ["preferences.scan_install_locations.confirm_import"],
message: ["preferences.scan_install_locations.message"],
detail: names.map(n => ` * ${n}`).join("\n") + "\n",
widgetParams: null,
buttons: [
{
label: [
"preferences.scan_install_locations.import_items",
{ numItems: params.numItems },
],
icon: "install",
action: actions.modalResponse({}),
},
"cancel",
],
})
);
return { confirm: !!res };
}
);
}
);
if (importRes.numFoundItems == 0) {
store.dispatch(
actions.statusMessage({
message: ["preferences.scan_install_locations.no_items_found"],
})
);
} else if (importRes.numImportedItems > 0) {
store.dispatch(actions.newItemsImported({}));
store.dispatch(
actions.statusMessage({
message: [
"preferences.scan_install_locations.items_imported",
{ numImportedItems: importRes.numImportedItems },
],
//.........这里部分代码省略.........