Java 如何允许在谷歌应用程序上快速发布请求?
我正在设置一个android订单处理应用程序,需要将订单存储在谷歌表单中。它可以工作,但直到我在for循环中添加了post-request函数。所以我通过在for循环中添加一个延迟来修复这个问题。然而,有没有其他方法可以做到这一点?因为每次我提交订单时,应用程序都会延迟,直到for循环完成 我添加了一个thread.sleep以避免此问题,如下所示:Java 如何允许在谷歌应用程序上快速发布请求?,java,android,google-apps-script,google-sheets,Java,Android,Google Apps Script,Google Sheets,我正在设置一个android订单处理应用程序,需要将订单存储在谷歌表单中。它可以工作,但直到我在for循环中添加了post-request函数。所以我通过在for循环中添加一个延迟来修复这个问题。然而,有没有其他方法可以做到这一点?因为每次我提交订单时,应用程序都会延迟,直到for循环完成 我添加了一个thread.sleep以避免此问题,如下所示: for (int i = 0; i < order.size(); i++){ String itemName = order.ge
for (int i = 0; i < order.size(); i++){
String itemName = order.get(i);
String addOn = addOns.get(i);
String quantity = order.get(i);
quantity = quantity.substring(quantity.length() - 2, quantity.length() - 1);
itemName = itemName.substring(0, itemName.length() - 4);
System.out.println("Item ID: " + i + " " + itemName + " " + addOn + " " + quantity + " " + orderId );
try{
Thread.sleep(550); //This is the delay I added.
}catch(InterruptedException ex){
//do stuff
}
addItemToSheet(itemName,addOn,quantity,orderId);
}
if (null != getActivity()) {
((MainActivity) getActivity()).clearOrderList();
}
我可以对java循环或google应用程序做些什么,这样我就可以避免使用thread.sleep来冻结我的应用程序,直到操作完成?也许是java中延迟的另一种方式?还是在谷歌应用程序中进行更快的操作?为了实现您想要的,我建议使用多线程 多线程是一种Java特性,允许并发执行 程序的两个或多个部分,以最大限度地利用CPU。每个 这种程序的一部分称为线程。因此,线程很轻 流程中的流程 这样,当POST请求在不同的线程中处理时,应用程序将继续在线程中运行。请记住,为了
wait()
和notify()
方法
上述方法用于控制您的工作流
- wait():此方法的行为与仅执行调用wait(0)完全相同
- notify():此方法唤醒正在该对象监视器上等待的单个线程
var ss = SpreadsheetApp.openByUrl("SPREADSHEET URL");
var sheet = ss.getSheetByName('Items');
function doPost(e){
var action = e.parameter.action;
if(action == 'addItem'){
return addItem(e);
}
}
function addItem(e){
var date = new Date();
var id = sheet.getLastRow();
var orderNum = e.parameter.orderNum;
var itemName = e.parameter.itemName;
var quantity = e.parameter.quantity;
var extra = e.parameter.extra;
sheet.appendRow([date,id,orderNum,itemName,quantity,extra]);
return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT);
}