我在使用promise等待函数结束后再返回值时遇到问题。我已经看了好几次这个论坛的回复,但不知道如何让它发挥作用。
Post>如何从异步调用返回响应?
我得到的最接近的是这个,但它仍然不起作用。如果有人能纠正我的错误,我将不胜感激。
来自Blazor:
string thing = await js.InvokeAsync<string>("GetThing");
至JavaScript:
window.CreateFontThumnailArray = () =>
{
var thing = "";
let start = new Promise(function (resolve, reject) {
someObject.GetThingWithCallback(function (blob) {
thing = "some text";
//I want this to finish before parent function completes,
// and "return thing;" is called.
resolve();
});
});
Promise.all([start]);
return thing;
}
我理解了上面文章中的一些内容,并设法使一些测试函数工作,但当它在函数的回调中时却不能工作。喜欢上面的例子"GetThingWithCallback(function(({"HERE"}(">
我唯一的另一个选择是让这个电话无效。然后处理Blazor端的回调。但如果我这样做,我就无法处理调用JavaScript函数后立即执行的操作。这将是最理想的。
非常感谢您的帮助。
我设法解决了这个问题,以防有人也需要这样做。。
我已经接近了,我只需要更改为异步函数。并更改Promise.all([start](;等待启动;
window.CreateFontThumnailArray = async () =>
{
var thing = "";
let start = new Promise(function (resolve, reject) {
someObject.GetThingWithCallback(function (blob) {
thing = "some text";
//I want this to finish before parent function completes,
// and "return thing;" is called.
resolve();
});
});
await start;
return thing;
}