簡體   English   中英

如何正確使用承諾?

[英]How to use promises correctly?

  1. 我有一個共享點表單,用戶可以在其中填寫一些文本框。

  2. 用戶單擊保存按鈕。 腳本從這里運行。

  3. 檢查是否所有texbox都已填充。

  4. 如果好,請根據輸入從外部列表中獲取一些字段,然后根據輸入內容更新其他列表。

  5. 將輸入另存為新項。

問題:我使用一個名為PreSaveAction()的函數。 當用戶單擊“保存”按鈕時,僅當此返回的true ,才會調用該表單。 因此,在返回true之前,我應該進行字段檢查和列表更新,但我不知道在哪里添加此return true 如果我直接將其添加到PreSaveAction()內,它將運行asyncron,因此在完成更新之前有30-40%的機會返回。 我是javascript新手,因此需要一些幫助。

我的簡化代碼如下所示:

function PreSaveAction() //This start if the user click on the save button, and create a new item if return with true
{
  var promresult;
  if(textbox!="")
  {
    //do my staff based on promise like: promresult=promise.then(input textbox, get list field).then(update).then(resolve true, fail false)
    return promresult;  //this run before the update is completed and promresult get value
  }
  else
  {
    return false;  //nothing happens if the textboxes are not filled yet.
  }

}

我讀到的承諾 ,我覺得我通情達理的,他們是如何工作的,但在我的情況下, PreSaveAction()具有多種功能(檢測的onclick,做我的東西,用真/假返回)。 我嘗試了幾種方法,但找不到解決方案,該解決方案將保留的收益放在哪里以及如何放置以等待我的諾言完成? 還是應該使用完全不同的方法? 非常感謝您的幫助!

function PreSaveAction() //This start if the user click on the save button, and create a new item if return with true
{
  var promresult;
  if(textbox!="")
  {
    //do my staff based on promise like: promresult=promise.then(input textbox, get list field).then(update).then(resolve true, fail false)
    return promresult;  //this run before the update is completed and promresult get value
  }
  else
  {
    return Promise.resolve(false);  //nothing happens if the textboxes are not filled yet.
  }

}

PreSaveAction()
  .then(function(result){
    if (result===false) {
      // this means the textboxes are not filled yet
    } else {
      // result is whatever is returned from promresult
    }
  })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM