非阻塞函数调用升压(Non-blocking function calls with Boost)

2019-10-23 19:22发布

我有这个功能是从Javascript(浏览器)呼吁:

STDMETHODIMP CActivexObject::WriteToREST(BSTR data, BSTR* retstr)
{
    std::string sdata = ConvertToString(data);
    RESTClient restclient;
    RESTClient::response resp = restclient.post("somewhere.com", "/post", sdata);
    CComBSTR bstrResult(resp.body.c_str());
    *retstr = bstrResult.Detach();
    return S_OK;
}

这种方法是从JavaScript这样叫:

for (var i = 0; i < rowElems.length; i++) {
     var resp = ActivexObject.WriteToREST(_rowToData(rowElems[i]));
}

该功能工作正常,除非调用REST或服务器获取速度慢,和JavaScript(浏览器),即Internet Explorer以显示“没有响应”错误框。 然后浏览器关闭。 如果我删除了“后”呼叫,只要登录数据中,有这样的没有这样的错误。

有时WriteToREST被称为两次或三次。

可能是什么这是一个可能的解决方案,我可以用C ++代码做什么呢?

文章来源: Non-blocking function calls with Boost