首先,对不起,我的英语很差。我在WinForms应用程序中使用CefSharp进行导航器和.NET代码之间的通信。
我试图用CefSharp在异步回调函数中解析promise,但在返回到.Net的响应中,我从未得到解析的promise的响应,而是一个似乎代表所述promise的消费者的对象(最后,catch,然后(。
有什么办法解决这个问题吗?
我留下一个例子,希望能帮助你理解这个问题。
//C#代码
public void TestCallback(IJavascriptCallback javascriptCallback)
{
const int taskDelay = 1500;
Task.Run(async () =>
{
await Task.Delay(taskDelay);
using (javascriptCallback)
{
var result = await javascriptCallback.ExecuteAsync();
//result is a JavaScriptResponse, but property "Result" is not "user" object, is a dictionary object with 'then', 'catch', 'finally' keys.
}
});
}
//JS代码
function async MyCallback()
{
// read our JSON
let response = await fetch('/article/promise-chaining/user.json');
let user = await response.json();
return user;
}
boundAsync.testCallback(MyCallback);
非常感谢。
问候
Borja
这个问题现在已经在cefsharp的88版本中得到解决:https://github.com/cefsharp/CefSharp/wiki/Advanced-Async-JavaScript-Binding-(JSB(/07c45fa962174d0476c4f2206f707365e9b1edd#带promise 的javascript回调