You run into trouble with your scope, The way you use ``tasklist`` is like a global (*not in the Global scope but in the functions scope*) But JSOM continues async so ``tasklist`` gets all different values This will get you on the right track: https://sharepoint.stackexchange.com/questions/164912/query-multiple-lists-using-javascript-csom (and off that oldskool IE8 use of ``createDelegate``) #Update As said you problem is the scope Think of it as your shoppingCart, you dropped items in another You also do **not** have to carry that whole ``this`` scope with you ![](https://i.sstatic.net/4pXEY.jpg) You can use JavaScripts ``.bind()`` to only carry with you (to other functions) what you need: ### Find all Documents Lists in all SubSites (webs): function getProjectSites() { var clientContext = new SP.ClientContext.get_current(); var webCollection = clientContext.get_web().getSubwebsForCurrentUser(null); clientContext.load(webCollection); clientContext.executeQueryAsync(inspectWeb.bind(webCollection), null); } function inspectWeb() { var webCollection = this;//bound by calling definition var webEnumerator = webCollection.getEnumerator(); while (webEnumerator.moveNext()) { var subWeb = webEnumerator.get_current(); var shoppingCart = { sitetitle: subWeb.get_title(), url: subWeb.get_serverRelativeUrl(), list: subWeb.get_lists().getByTitle('Documents') } // this is from your code!! (abusing) a global clientContext // stricty speaking you should get the correct context based on the siteurl again // that way the inspectWeb function could be used (with a url PARAMETER) to inspect // individual Webs. Your function can now only work in the async chain // and only as no other code messes with the ``clientContext`` global var clientContext.load(shoppingCart.list); console.log('inspecting Site: ' + shoppingCart.sitetitle); clientContext.executeQueryAsync( inspectList.bind(shoppingCart),//successCallback function () {// errorCallback (for site without a Document list) console.warn('empty listCollection in', shoppingCart.url); } ); } } function inspectList() { var list = this.list;//var shoppingCart = this; console.log(list.get_itemCount(), 'items in', list.get_title(), 'from', shoppingCart.url); //to get the items itself you have to do more (async) calls: getItems } getProjectSites();