async loop become shared component