第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 XMLHttpRequest 之后返回 Promise

如何在 XMLHttpRequest 之后返回 Promise

鴻蒙傳說 2023-01-06 16:38:31
我在 Dynamics 365 中調(diào)用函數(shù) enableButton 來啟用/禁用按鈕。我必須向系統(tǒng)返回一個(gè) Promise。如果我執(zhí)行一個(gè)返回 Promise 的簡單測試函數(shù),這工作正常,但我需要獲取一個(gè)令牌,然后對服務(wù)進(jìn)行外部調(diào)用以設(shè)置 true/false,然后返回 Promise。當(dāng)我這樣做時(shí),它不起作用。似乎 Dynamics 從未從函數(shù)中獲得 Promise。這是我的代碼(我已經(jīng)發(fā)布了一些細(xì)節(jié))。我只在 Dynamics 中調(diào)用 enableButton()。function enableButton() {    var params = getParams();    var xhr = new XMLHttpRequest();    xhr.open("POST", "http://my.tokenendpoint.com");    xhr.onload = function () {        var token = JSON.parse(xhr.response).access_token;        getExternalData(token, ssn);    }    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    xhr.send(params);}function getExternalData(token) {    return new Promise(function (resolve, reject) {        var url = "http://example.com"        var query = JSON.stringify(            {                "queryparams": true            }        );        var xhr = new XMLHttpRequest();        xhr.open("POST", url);        xhr.onload = () => {            if (xhr.readyState === xhr.DONE) {                if (xhr.status === 200) {                    var data = JSON.parse(xhr.responseText);                    var hasExternalData = hasExtData(data[0]); //returns a boolean                    resolve(hasExternalData);                }                else {                    reject(xhr.statusText);                }            }        };        xhr.onerror = function (e) {            reject(xhr.statusText);        };        xhr.setRequestHeader("Authorization", "Bearer " + token);        xhr.setRequestHeader("Content-Type", "application/json");        xhr.send(query);    });}我已經(jīng)使用 fetch 重寫了代碼,但我沒有收到返回給 Dynamics 的正確數(shù)據(jù)。如果我在 Dynamics 中使用像這樣的簡單函數(shù)進(jìn)行測試,它會(huì)起作用:function enableButton() {     return new Promise(function (resolve, reject) {                var test = true;                 resolve(test);             },             function (error) {                 reject(error.message);                 console.log(error.message);             }         );     }
查看完整描述

2 回答

?
BIG陽

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

在您的情況下,最好將 async/await 與fetch一起使用。


async function enableButton() { 

    const responseA = await fetch(accesstokenUrl, {

        method: 'POST',

        body: {

                "access_token": "123"

        },

    });

   const responseAJson = await responseA.json();

   console.log("Response from the first fetch", responseAJson);

   console.log("Your Access Token", responseAJson.access_token);

   

   const responseB = await fetch(url, {

        method: 'POST',

        headers: {

            'Authorization': 'Bearer ' + responseAJson.access_token,

            'Content-Type': 'application/json'

        },

        body: JSON.stringify(

            {

                "queryparams": true

            })

    });

    console.log("Response from the second fetch", await responseB.json());

    

    const hasDebtCase = getDebtCase(responseB.json());

    if (hasDebtCase) {

        return Promise.resolve(hasDebtCase);

    } else {

        return Promise.reject(data);

    }  

 }


查看完整回答
反對 回復(fù) 2023-01-06
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

請參閱下面的文章,了解在 Dynamics CRM 中使用啟用規(guī)則時(shí)如何返回承諾。 https://ajitpatra.com/2019/12/11/d365-enable-rule-for-button-with-asynchronous-api-request-using-promise/?utm_campaign=Dynamics%20Weekly&utm_medium=email&utm_source=Revue%20newsletter

如果我有幫助,請標(biāo)記我的答案已驗(yàn)證


查看完整回答
反對 回復(fù) 2023-01-06
  • 2 回答
  • 0 關(guān)注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)