我需要同时进行两个 API 调用。并且其中一个回调必须在另一个之前执行。但是按顺序调用很慢并且不利于用户体验:
axios.get("/get_some_data").then(function(resp) {
do_some_operation();
axios.get("/get_other_data").then(function(resp) {
do_other_operation(); // Needs /get_some_data and /get_other_data both be done
});
});
});
在 C++ 中使用std::conditional_variable和以下伪(C++17 左右)代码可以轻松地进行并行调用和等待另一个调用
std::conditional_variable cv;
std::mutex mtx;
get_request("/get_some_data",[&](auto&& resp){
do_some_operation();
// Notify that the operation is complete. The other callback can proceed
cv.notify_all();
});
get_request("/get_other_data",[&](auto&& resp){
// Wait until someone notify the previous task is done
std::lock_guard lk(mtx);
cv.wait(lk);
do_other_operation();
});
我在各种网站上搜索过。但我不认为 JavaScript 带有任何类似std::conditional_variable甚至std::mutex. 我怎样才能发出并行请求,但让回调等待另一个?
莫回无
繁星coding
相关分类