我有一个sharepoint表单,用户填写了一些文本框。
用户点击“保存”按钮。脚本从这里开始运行。
检查所有texbox是否已填满。
如果好,请根据输入从外部列表中获取一些字段,并根据该列表更新其他列表。
将输入保存为新项目。
问题:我使用名为PreSaveAction()
的函数。当用户点击" Save"按钮,仅当返回true
时才会保存表单ll。因此,在使用true
返回之前,我应该进行现场检查并列出更新,但我不知道在哪里添加此return true
。如果我直接在运行asyncron的PreSaveAction()
内添加它,那么在更新完成之前有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.
}
}
我读到promises并且我认为我理解它们是如何工作的,但在我的情况下PreSaveAction()
有多个功能(检测onclick,做我的东西,返回true / false)。我尝试了几种方法,但是我没有找到解决方案在哪里以及如何从presave返回以等待我的承诺完成?或者我应该使用完全不同的方法?非常感谢你的帮助!
答案 0 :(得分:0)
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
}
})