Forum Discussion
Anonymous
7 years agoNot applicable
Delay web query until condition met from another web query
I use an API that provides a Json response which includes a statusUrl and a downloadUrl. If I immediately hit up the downloadUrl there is usually no data. The statusUrl Json response advises when t...
- 7 years ago
Hi Anonymous,
I've prepared a template which you can use for solving your problem.
You have to add your logic for processing JSON responses and modify the WaitForList according your needs.
let // request data RequestDataRecord = fnProcessJson(Web.Contents("request data URL")), // wait 10x for 5 seconds WaitForList = List.Repeat({5}, 10),
// wait until the response is COMPLETE, but max 50 secs WaitForStatus = List.MatchesAny( WaitForList, each Function.InvokeAfter( () => fnProcessJson(Web.Contents("http://StatusCheckURL")), #duration(0,0,0,_) ) = "COMPLETE" ), // download file if WaitForStatus was successful DownloadFile = if WaitForStatus then fnProcessJson(Web.Contents("download data URL")) else null in DownloadFile
Nolock
7 years agoResident Rockstar
Hi Anonymous,
I've prepared a template which you can use for solving your problem.
You have to add your logic for processing JSON responses and modify the WaitForList according your needs.
let
// request data
RequestDataRecord = fnProcessJson(Web.Contents("request data URL")),
// wait 10x for 5 seconds
WaitForList = List.Repeat({5}, 10),
// wait until the response is COMPLETE, but max 50 secs
WaitForStatus = List.MatchesAny(
WaitForList,
each
Function.InvokeAfter(
() => fnProcessJson(Web.Contents("http://StatusCheckURL")),
#duration(0,0,0,_)
) = "COMPLETE"
),
// download file if WaitForStatus was successful
DownloadFile =
if WaitForStatus then
fnProcessJson(Web.Contents("download data URL"))
else
null
in
DownloadFileAnonymous
7 years agoNot applicable
The first response you wrote was correct, I just wasn't calling my function correctly!
Thanks for your help.