How design non-blocking API in blueprint? like "On Success" on the "DownLoadImage"(blueprint API)

Now, C++ thread way:
1.main thread add task in another thread.(public variable)
2.thread working.
3.done, save data to public variable.
4.main thread -> message loop (in every frame) -> variable detection -> to working

the way they communicate with each other.

I’ve read the AsyncTaskDownloadImage.h and .cpp
Didn’t understand.
Can you give me some demo? explain this.
Thank you everybody!!!