Значение всегда неопределено, возвращаясь из обещания - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я работаю с Blackberry Dynamics SDK.

В настоящее время я использую функцию запроса http для SDK, но каждый раз, когда я хочу вернуть ответ от вызова http, он всегда неопределен - я пытался обещатьон возвращает значение, но безрезультатно.

Первоначально он использовал два обратных вызова - которые по праву вернули бы меня неопределенным, но если я сделаю это обещание, если он не вернет мне значение.

Код

function constructGDHttpPostRequest(reqObj) {
    let PostRequest = window.plugins.GDHttpRequest.createRequest("POST", URI + reqObj.endPoint, 30, false);
    PostRequest.addRequestHeader('Content-Type', 'application/json');
    PostRequest.addHttpBody(reqObj.body);
    return SendRequest(PostRequest).then(function (httpRes) {
        console.log(httpRes);
        return httpRes;
    })
}

function SendRequest(Request) {
    return new Promise(function (resolve) {
        resolve(Request.send(sendSuccess));
    })
}

function sendSuccess(response) {
    console.log("Received valid response from the send request");
    let Response = window.plugins.GDHttpRequest.parseHttpResponse(response);
    return JSON.parse(Response.responseText);
}

Я пытался использовать некоторые из заданных вопросов, относящихся к чему-то подобному, но он все еще возвращался неопределенным из обещания.

Приветствия заранее.

1 Ответ

0 голосов
/ 26 ноября 2018

Согласно предложению @Nikos M. это то, что вы сделали и теперь работаете как положено.

Мне нужно было разрешить обратный вызов, чтобы вернуть значение.

Я бы хотелсделайте обратный вызов немного чище с некоторыми предложениями.

   function constructGDHttpPostRequest(reqObj) {
        let PostRequest = window.plugins.GDHttpRequest.createRequest("POST", URI + reqObj.endPoint, 30, false);
        PostRequest.addRequestHeader('Content-Type', 'application/json');
        PostRequest.addHttpBody(reqObj.body);
        return SendRequest(PostRequest).then(function (httpRes) {
            console.log(httpRes);
            return httpRes;
        })
    }

    function SendRequest(Request) {
        return new Promise(function (resolve) {
            Request.send(function (response) {
                resolve(JSON.parse(window.plugins.GDHttpRequest.parseHttpResponse(response).responseText));
            });
        })
    }
...