Hola @andrewtkarl , ¡Gracias por su sugerencia! Hemos capturado su solicitud y la tomaremos en consideración.
@andrewtkarl , el desarrollador compartió esto:
Actualmente, un usuario puede escribir un script mediante una solicitud HTTP con Enviar (asnyc) que devolverá una promesa JSL. Pueden rastrear la cantidad de promesas, que serán las conexiones simultáneas.
Cuando finaliza una promesa (con onResult o onError), pueden poner en cola más solicitudes.
Este es un ejemplo del manejo de la cantidad máxima de solicitudes HTTP simultáneas mediante solicitudes HTTP y promesas JSL compartidas por @bryan_boone :
Names Default To Here( 1 );
//populate the requests
requests = {};
promises = {};
count = 100;
max = 30;
For(i = 1, i <= count, i++,
request = New HTTP Request( //this is the HTTP Request for the Query String Example in the SI
url( "http://httpbin.org/get" ),
Method( "GET" ),
Query String( [["username" => "bob", "address" => "12345", "count"=>i]] )
);
InsertInto(requests, request);
);
//now send them async
process_result = Function( {p, r},
//Show(p);
//Show( r );
if(N Items(promises),
RemoveFrom(promises, 1);
);
);
process_error = Function( {p, e, t},
//Show(p);
//Show( e );
//Show( t );
if(N Items(promises),
RemoveFrom(promises, 1);
);
);
while(N Items(requests),
count = max - N Items(promises);
if(count > N Items(requests),
count = N Items(requests);
);
Show(count);
For(i = 1, i <= count, i++,
request = requests[1];
RemoveFrom(requests, 1);
promise = request << Send( "async" );
InsertInto(promises, promise);
promise << On Result( process_result );
promise << On Error( process_error );
);
If(Nitems(promises),
wait(0);
);
);
//catch any stragglers
while(Nitems(promises),
wait(0);
);
Write("\!nDone!!!\!n");@andrewtkarl , hace @bryan_boone ¿La respuesta de satisface esta solicitud?
@mia_stephens Sí lo hace, gracias a ambos por su ayuda.
gracias por la confirmación @andrewtkarl .Marcará esto como entregado.
para limitar el número de llamadas HTTP simultáneas.
Algo como esto
custom_multi_http = Function( {mm, max = 30},
//mm=multi_http_requests;
//max=5;
res = {};
status = {};
mm_get = mm << get requests;
chunks = Ceiling( N Items( mm_get ) / max );
chunk_list = {};
For( i = 1, i <= chunks, i++,
chunk_i = New Multi HTTP Request();
For( j = 1 + (i - 1) * max, j <= Min( max * i, N Items( mm_get ) ), j++,
chunk_i << Add( mm_get[j] )
);
Wait( 0 );
chunk_i_requests = chunk_i << get requests;
Insert Into( res, chunk_i << Send() );
Insert Into( status, chunk_i_requests << get status() );
);
Return( res, status );
);