Blazor JS возврат не работает с функцией вставки - PullRequest
1 голос
/ 09 марта 2020

У меня проблемы с использованием обещания дождаться завершения функции перед возвратом значения. Я просмотрел этот ответ на форуме несколько раз, но не могу понять, как заставить его работать.

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 "})"

Моя единственная другая опция - сделать вызов void. А затем обработать обратный вызов Blazor. Но если я это сделаю, я не смогу обработать немедленные действия после вызова функции JavaScript. Что было бы самым идеальным.

Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 09 марта 2020

Мне удалось разобраться, на случай, если кому-то тоже понадобится это сделать.

Я был близок, мне просто нужно было перейти на асинхронную c функцию. И измените Promise.all ([начало]); ждать начала;

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...