The Zurich release has arrived! Interested in new features and functionalities? Click here for more

Async and promise.All in a catalog client script

Smith Johnson
Tera Guru

Hello,

I have the following script 

var fetchNames = async () => {
      console.log("aa");
      try {
        var res = await Promise.all([
          fetch(url1,{
				method: "GET",
				headers: {
					"Accept" : "application/json",
					"Authorization" : "eyJraWQiOiJ0QkdvUmhIWVp2NUEzcjRlWHlHbHdtd2o1ZUFUMnVkSmx3MzVNcDIraW9zPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI2YTdiNzVmZi1jMWNkLTRiZmEtYThmNi00ODUyNzg0NmY2ZmUiLCJhdWQiOiI2ODRzMThjMDFlMDNuYXRtM2s4b3BxaGY2cCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImQ0ZmJmMzQ2LWIwOGYtNGQzNS04MDI5LWJiOWI3ZTQ5MGJhZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjQ2MTU2Njc5LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb21cL2V1LXdlc3QtMV9xZ1duSGVTYkQiLCJjb2duaXRvOnVzZXJuYW1lIjoicHBtdGVhbUB2b2RhZm9uZS5jb20iLCJleHAiOjE2NDYxNjAyNzksImlhdCI6MTY0NjE1NjY3OSwiZW1haWwiOiJwcG10ZWFtQHZvZGFmb25lLmNvbSJ9.EWK_8d2MSyUloQsnZxgGHRASlq9HdFLHuJgdC4ZqOvg8CiX5m3b1lqeIqb6HWkBUXpGSThqhqMmoKTmKql4VIGsWdfPM0h4gOyVOTEgsigG2GU86J6IkOogP4F0uR_qoG5daHsFwRiPzSYIskAd3yJQ53a4L8P_uTmaUeb5JcBOvXvp9r9HSp_iGPVL3nJ0zyKzlASkFYIPtuRVrfR1_ilLEOgHLe3B2HCQNdDLlFhlZQbvRKVUmsEZyrLgTXt7wN7RQ9pQRUF7gDPNeevwZTVyqcj5XfjvINpXBqpnZE3OzzQrp5SXbSLhUG8V2Uaw0UcE-e2DdXDsths0YJXneqQ",
					"Content-Type" : "application/json",
					"User-Agent" : "servicenow"
				}
			}),
			 fetch(url2,{
				method: "GET",
				headers: {
					"Accept" : "application/json",
					"Authorization" : "eyJraWQiOiJ0QkdvUmhIWVp2NUEzcjRlWHlHbHdtd2o1ZUFUMnVkSmx3MzVNcDIraW9zPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI2YTdiNzVmZi1jMWNkLTRiZmEtYThmNi00ODUyNzg0NmY2ZmUiLCJhdWQiOiI2ODRzMThjMDFlMDNuYXRtM2s4b3BxaGY2cCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImQ0ZmJmMzQ2LWIwOGYtNGQzNS04MDI5LWJiOWI3ZTQ5MGJhZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjQ2MTU2Njc5LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb21cL2V1LXdlc3QtMV9xZ1duSGVTYkQiLCJjb2duaXRvOnVzZXJuYW1lIjoicHBtdGVhbUB2b2RhZm9uZS5jb20iLCJleHAiOjE2NDYxNjAyNzksImlhdCI6MTY0NjE1NjY3OSwiZW1haWwiOiJwcG10ZWFtQHZvZGFmb25lLmNvbSJ9.EWK_8d2MSyUloQsnZxgGHRASlq9HdFLHuJgdC4ZqOvg8CiX5m3b1lqeIqb6HWkBUXpGSThqhqMmoKTmKql4VIGsWdfPM0h4gOyVOTEgsigG2GU86J6IkOogP4F0uR_qoG5daHsFwRiPzSYIskAd3yJQ53a4L8P_uTmaUeb5JcBOvXvp9r9HSp_iGPVL3nJ0zyKzlASkFYIPtuRVrfR1_ilLEOgHLe3B2HCQNdDLlFhlZQbvRKVUmsEZyrLgTXt7wN7RQ9pQRUF7gDPNeevwZTVyqcj5XfjvINpXBqpnZE3OzzQrp5SXbSLhUG8V2Uaw0UcE-e2DdXDsths0YJXneqQ",
					"Content-Type" : "application/json",
					"User-Agent" : "servicenow"
				}
			}),
			fetch(url3,{
				method: "GET",
				headers: {
					"Accept" : "application/json",
					"Authorization" : "eyJraWQiOiJ0QkdvUmhIWVp2NUEzcjRlWHlHbHdtd2o1ZUFUMnVkSmx3MzVNcDIraW9zPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI2YTdiNzVmZi1jMWNkLTRiZmEtYThmNi00ODUyNzg0NmY2ZmUiLCJhdWQiOiI2ODRzMThjMDFlMDNuYXRtM2s4b3BxaGY2cCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImQ0ZmJmMzQ2LWIwOGYtNGQzNS04MDI5LWJiOWI3ZTQ5MGJhZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjQ2MTU2Njc5LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb21cL2V1LXdlc3QtMV9xZ1duSGVTYkQiLCJjb2duaXRvOnVzZXJuYW1lIjoicHBtdGVhbUB2b2RhZm9uZS5jb20iLCJleHAiOjE2NDYxNjAyNzksImlhdCI6MTY0NjE1NjY3OSwiZW1haWwiOiJwcG10ZWFtQHZvZGFmb25lLmNvbSJ9.EWK_8d2MSyUloQsnZxgGHRASlq9HdFLHuJgdC4ZqOvg8CiX5m3b1lqeIqb6HWkBUXpGSThqhqMmoKTmKql4VIGsWdfPM0h4gOyVOTEgsigG2GU86J6IkOogP4F0uR_qoG5daHsFwRiPzSYIskAd3yJQ53a4L8P_uTmaUeb5JcBOvXvp9r9HSp_iGPVL3nJ0zyKzlASkFYIPtuRVrfR1_ilLEOgHLe3B2HCQNdDLlFhlZQbvRKVUmsEZyrLgTXt7wN7RQ9pQRUF7gDPNeevwZTVyqcj5XfjvINpXBqpnZE3OzzQrp5SXbSLhUG8V2Uaw0UcE-e2DdXDsths0YJXneqQ",
					"Content-Type" : "application/json",
					"User-Agent" : "servicenow"
				}
			}),
			fetch(url4,{
				method: "GET",
				headers: {
					"Accept" : "application/json",
					"Authorization" : "eyJraWQiOiJ0QkdvUmhIWVp2NUEzcjRlWHlHbHdtd2o1ZUFUMnVkSmx3MzVNcDIraW9zPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI2YTdiNzVmZi1jMWNkLTRiZmEtYThmNi00ODUyNzg0NmY2ZmUiLCJhdWQiOiI2ODRzMThjMDFlMDNuYXRtM2s4b3BxaGY2cCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImQ0ZmJmMzQ2LWIwOGYtNGQzNS04MDI5LWJiOWI3ZTQ5MGJhZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjQ2MTU2Njc5LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb21cL2V1LXdlc3QtMV9xZ1duSGVTYkQiLCJjb2duaXRvOnVzZXJuYW1lIjoicHBtdGVhbUB2b2RhZm9uZS5jb20iLCJleHAiOjE2NDYxNjAyNzksImlhdCI6MTY0NjE1NjY3OSwiZW1haWwiOiJwcG10ZWFtQHZvZGFmb25lLmNvbSJ9.EWK_8d2MSyUloQsnZxgGHRASlq9HdFLHuJgdC4ZqOvg8CiX5m3b1lqeIqb6HWkBUXpGSThqhqMmoKTmKql4VIGsWdfPM0h4gOyVOTEgsigG2GU86J6IkOogP4F0uR_qoG5daHsFwRiPzSYIskAd3yJQ53a4L8P_uTmaUeb5JcBOvXvp9r9HSp_iGPVL3nJ0zyKzlASkFYIPtuRVrfR1_ilLEOgHLe3B2HCQNdDLlFhlZQbvRKVUmsEZyrLgTXt7wN7RQ9pQRUF7gDPNeevwZTVyqcj5XfjvINpXBqpnZE3OzzQrp5SXbSLhUG8V2Uaw0UcE-e2DdXDsths0YJXneqQ",
					"Content-Type" : "application/json",
					"User-Agent" : "servicenow"
				}
			})
        ]);
		   
        var data = await Promise.all(res.map(r => r.json()));
	var response=data.flat();
        console.log(response);
	   console.log(JSON.stringify(response[0]));
      } catch {
        throw Error("Promise failed");
      }
};

fetchNames();


If I try to copy and paste it within a catalog client script, I get an error.

find_real_file.png

How should I modify the above script in order SN to be able to execute it?

I would be grateful for your assistance.

Regards,
Smith.

7 REPLIES 7

Dan H
Tera Guru

Hi,

Just for your information, you are getting an error because you are using ES6+ Javascript.

ServiceNow does not support ES6+ and is currently using ES5. It wont be able to run advanced asynchronous programming techniques like => and Awaits

Looking at the script itself, I may be wrong, but I cant see this being changed and working as you may think it will in a Client script

Please mark my answer as Correct/Helpful based on impact

Regards,

Dan H

 

 

Hi Dan, 

thank you for your response.

So based on your experience, you don't think I can "translate" it somehow to code that SN understands and has the same functionality??

No problem,

What exactly is the requirement, what to you want to do?

 

Hi Dan,

 

I m searching for a way to make 4 API calls in parallel (simulatenously). Either in client side or server side.

Any ideas??