Closed codoffer closed 2 years ago
@codoffer try to using setTimeOut in asyncPrintColumnsText function!
asyncPrintColumnsText = (
columnHeader,
columnWidth,
columnAliment,
columnStyle,
) => {
return new Promise((resolve, reject) => {
setTimeOut(()=>{
this.Printer.printColumnsText(
columnHeader,
columnWidth,
columnAliment,
columnStyle,
);
resolve();
}, 100)
});
};
Thanks @thiendangit
I have solved the issue by adding setTimeout with each method and incrementing on every use.
asyncPrintText = (text, waitTime) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.Printer.printText(text);
resolve();
}, waitTime * 100);
});
};
asyncPrintBill = (bill, waitTime) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.Printer.printBill(bill);
resolve();
}, waitTime * 100);
});
};
asyncPrintColumnsText = (
columnHeader,
columnWidth,
columnAliment,
columnStyle,
waitTime,
) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.Printer.printColumnsText(
columnHeader,
columnWidth,
columnAliment,
columnStyle,
);
resolve();
}, waitTime * 100);
});
};
I am using like below
printBillOrderInfo = () => {
return new Promise((resolve, reject) => {
const paymentMethod = this.order?.method
? orderPaymentMethods?.[this.order.method] !== undefined
? orderPaymentMethods?.[this.order.method]
: ' - '
: ' - ';
const userName =
this.order?.user?.name !== null ? this.order?.user?.name : ' - ';
const pickupMethod = orderPickupMethods?.[this.order.action];
const orderRemark = this.order?.note !== null ? this.order?.note : ' - ';
const orderDate = codoDateformat(this.order?.create_at);
Promise.all([
printerService.asyncPrintColumnsText(
['Order Id : ', `${this.order?.order_number}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
['Method : ', `${pickupMethod}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
['Payment Method : ', `${paymentMethod}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
['Note : ', `${orderRemark}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
['User : ', `${userName}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
['Order Date : ', `${orderDate}`],
[23, 23],
[ColumnAliment.LEFT, ColumnAliment.RIGHT],
['', ''],
this.waitTime++,
),
printerService.asyncPrintColumnsText(
[`${DOUBLE_DASHED_LINE}`],
[52],
[ColumnAliment.LEFT],
[''],
this.waitTime++,
),
]).then(() => {
resolve();
});
});
};
Hello, I am facing the same issue with column printing. I have used promises and async/await
The same issue was opened before and closed - issue
I have created 3 separate common functions for printing and using these for sending text/image/columnText
On printing screen - I have created multiple functions to craft a full bill (Function for Header, Function for Items, Function for footer, etc)
Below is a Header function -
In the final - Printing function (Calling by print button press), I am again calling promise.all() for asynchronous printing, but all is in vain. It's not working.
Can you help me with this?