I have code to create a folder and add items to the folder . I have used CSOM to do this particulat operation . Since this is async code , sometimes the folder is not created and add items is getting fired with error . How to handle something like this? Is there any code example to create folder in list and add items and overcome above scenario.
function CreateNewfolder(loginuserid, strTitle) {
var Context;
var oWebsite;
var oList;
var itemCreateInfo;
var myListItemCreationInfo;
Context = new SP.ClientContext.get_current();
oWebsite = Context.get_web();
List = oWebsite.get_lists().getByTitle("List");
var itemurl = "/Lists/" + List + "/" + loginUSERID;
checkfolderexist();
if (checkfolderexist() == false) {
itemCreateInfo = new SP.ListItemCreationInformation();
itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
itemCreateInfo.set_leafName(loginUSERID);
this.oListItem = List.addItem(itemCreateInfo);
this.oListItem.set_item('Title', loginUSERID);
this.oListItem.set_item('Name', strTitle);
this.oListItem.update();
oWebsite.update();
Context.load(this.oListItem);
Context.executeQueryAsync(Function.createDelegate(this, successHandlerFolder), Function.createDelegate(this, errorHandlerFolder));
function successHandlerFolder( {
console.log(" Create Folder Method success");
CreateNewFiles(loginUSERID, strTitle);
}
function errorHandlerFolder() {
console.log(" Create Folder Method fail " + JSON.stringify(error));
}
}
else {
CreateNewFiles(loginUSERID,strTitle);
}
}
function CreateNewFiles(loginUSERID, strTitle) {
var listName = "MyFavorites";
var clientContext;
var oWebsite;
var oList;
var itemCreateInfo;
var myListItemCreationInfo;
var clientContext = new SP.ClientContext.get_current();
var Website = clientContext.get_web();
oList = Website.get_lists().getByTitle("List");
var myListItemCreationInfo = new SP.ListItemCreationInformation();
var folderUrl = "/Lists/List/" + loginUSERID;
myListItemCreationInfo.set_folderUrl(folderUrl);
this.newLinkItem = oList.addItem(myListItemCreationInfo);
this.newLinkItem.set_item('Title', url);
this.newLinkItem.set_item('Name', strTitle);
this.newLinkItem.update();
oList.update();
Website.update();
clientContext.load(this.newLinkItem);
clientContext.executeQueryAsync(Function.createDelegate(this, successHandler), Function.createDelegate(this, errorHandler));
function successHandler() {
}
function errorHandler() {
}
}
function checkfolderexist() {
var listTitle = 'List';
var fileUrl = "/Lists/List/" + loginUSERID;
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var qry = new SP.CamlQuery();
qry.set_viewXml('<View Scope="RecursiveAll"><Query><Where><Eq><FieldRef Name="FileRef"/><Value Type="Url">' + fileUrl + '</Value></Eq></Where></Query></View>');
var items = list.getItems(qry);
ctx.load(items);
ctx.executeQueryAsync(function () {
fileFound = (items.get_count() > 0);
return fileFound;
},
function (sender, args) {
console.log(args.get_message());
});
}