Java 如何允许在谷歌应用程序上快速发布请求?

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

我正在设置一个android订单处理应用程序,需要将订单存储在谷歌表单中。它可以工作,但直到我在for循环中添加了post-request函数。所以我通过在for循环中添加一个延迟来修复这个问题。然而,有没有其他方法可以做到这一点?因为每次我提交订单时,应用程序都会延迟,直到for循环完成

我添加了一个thread.sleep以避免此问题,如下所示:

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():此方法唤醒正在该对象监视器上等待的单个线程
有关Java中多线程的更多详细信息

你会发现关于上述方法的更多细节

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);

}