@@ -41,6 +41,14 @@ component accessors="true" {
4141 inject = " box:interceptorService"
4242 persistent = " false" ;
4343
44+ /**
45+ * The ColdBox AsyncManager.
46+ */
47+ property
48+ name = " _async"
49+ inject = " box:asyncManager"
50+ persistent = " false" ;
51+
4452 /* ===========================================
4553 = Metadata Properties =
4654 ===========================================*/
@@ -1394,15 +1402,31 @@ component accessors="true" {
13941402 *
13951403 * @return quick.models.BaseEntity;
13961404 */
1397- public any function loadRelationship ( required any name , boolean force = false , boolean parallel = false ) {
1405+ public any function loadRelationship (
1406+ required any name ,
1407+ boolean force = false ,
1408+ boolean parallel = false
1409+ ) {
13981410 arguments .name = arrayWrap ( arguments .name );
1399- arguments .name .each ( ( n ) = > {
1400- if ( force || ! isRelationshipLoaded ( n ) ) {
1401- var relationship = invoke ( this , n );
1402- relationship .setRelationMethodName ( n );
1403- assignRelationship ( n , relationship .get () );
1411+ if ( arguments .name .len () > 1 && arguments .parallel ) {
1412+ for ( var n in arguments .name ) {
1413+ if ( arguments .force || ! isRelationshipLoaded ( n ) ) {
1414+ variables ._async .newFuture ( () = > {
1415+ var relationship = invoke ( this , n );
1416+ relationship .setRelationMethodName ( n );
1417+ assignRelationship ( n , relationship .get () );
1418+ } );
1419+ }
1420+ }
1421+ } else {
1422+ for ( var n in arguments .name ) {
1423+ if ( arguments .force || ! isRelationshipLoaded ( n ) ) {
1424+ var relationship = invoke ( this , n );
1425+ relationship .setRelationMethodName ( n );
1426+ assignRelationship ( n , relationship .get () );
1427+ }
14041428 }
1405- }, arguments . name . len () > 1 && arguments . parallel );
1429+ }
14061430 return this ;
14071431 }
14081432
0 commit comments