कैसे करने के लिए प्रतिक्रिया के लिए प्रतीक्षा से अन्य फोन करने के लिए एक अनुरोध बनाने के लिए पोस्ट कॉल

0

सवाल

मैं नीचे 2 फाइलें, मैं करना चाहते हैं यह सुनिश्चित करने के लिए कॉल क्रम में है. मैं करने की कोशिश की वादा और कॉलबैक, मैं मानता है, मैं नहीं कर रहा हूँ 100% के साथ परिचित async कॉल.

config.js:

import rolesJson from '../../roles';

class Config{

url;
rolesList;

constructor(callback){

    var baseurl = 'www.example.com/env';

    fetch(baseurl)
        .then(response => response.json())
        .then(data => {
            this.url = data.url;
            getAuth(data.env);
    }).catch((error) => {

    });

    const getAuth= (env) => {
        const headers = { 'Content-Type': 'application/json' };
        const options = { method: 'POST', headers, body:JSON.stringify(rolesJson(env))};
        console.log("THIS BODY SHOULD NOT BE UNDEFINED", options.body);
        fetch('www.example.com/auth', options)
            .then(response => response.json())
            .then(data => {

            }).catch((error) => {

            });
    };
}    
}
module.exports = Config;

roles.js

var roleUrl = 'www.example.com/roles';

const setEnviroment = (rolesdata,env) => {
let reqBody = {
    "environment": env,
    "components": rolesdata
}
console.log("REQUEST BODY CREATED", reqBody);
return req;
}

const getRoles = (env) => {
fetch(roleUrl)
.then(response => response.json())
.then(roles => {
    let rolesList = [];
    roles.map(x => {
        const roleObj = {
            name: x.name,
            id: x.id,
        }
        rolesList.push(roleObj);
    })
    return setEnviroment(rolesList, env);
 }).catch((error) => {

});
};
module.exports = getRoles;

मैं कैसे कर सकते हैं यकीन है कि जब मैं कर रहा हूँ बुला लायें('www.example.com/auth', विकल्प), विकल्प.शरीर नहीं है अपरिभाषित? मैं करने की कोशिश की है का उपयोग async/इंतजार और कॉलबैक, कुछ भी नहीं है मेरे लिए काम करता है.

किसी भी मदद की बहुत सराहना की जाएगी.

धन्यवाद

1

सबसे अच्छा जवाब

0

कोई चिंता नहीं - वादे कर रहे हैं पाने के लिए आसान नहीं है । तो सब से पहले, आप कर सकते हैं केवल पर भरोसा करते हैं, मूल्य, अगर तुम इंतजार कर रहे थे कि यह हल किया गया था. यह किया जा सकता है, के रूप में आप पहले से ही बाहर की ओर इशारा किया, के साथ .तो के साथ या async / इंतजार है ।

.तो समाधान:

var roleUrl = 'www.example.com/roles';

const setEnviroment = (rolesdata,env) => {
let reqBody = {
    "environment": env,
    "components": rolesdata
}
console.log("REQUEST BODY CREATED", reqBody);
return req;
}

const getRoles = (env) => {
fetch(roleUrl)
.then(response => response.json())
.then(roles => {
    let rolesList = [];
    roles.map(x => {
        const roleObj = {
            name: x.name,
            id: x.id,
        }
        rolesList.push(roleObj);
    })
    return setEnviroment(rolesList, env);
 });
 // we return the promise
};
module.exports = getRoles;
class Config{

url;
rolesList;

constructor(callback){

    var baseurl = 'www.example.com/env';

    fetch(baseurl)
        .then(response => response.json())
        .then(data => {
            this.url = data.url;
            getAuth(data.env);
    }).catch((error) => {

    });

    const getAuth= (env) => {
        const headers = { 'Content-Type': 'application/json' };
        const options = { method: 'POST', headers, body:JSON.stringify(rolesJson(env))};
        console.log("THIS BODY SHOULD NOT BE UNDEFINED", options.body);
        fetch('www.example.com/auth', options)
            .then(response => response.json());
        // we return the Promise
    };
}    
}
module.exports = Config;
// calling method

Config.getAuth(env).then((value) => {
    return getRoles(env); //this returns a Promise again
}).then(x => {
    // here you have the return type of getRoles
})

async-इंतजार-समाधान:

var roleUrl = 'www.example.com/roles';

const setEnviroment = (rolesdata,env) => {
let reqBody = {
    "environment": env,
    "components": rolesdata
}
console.log("REQUEST BODY CREATED", reqBody);
return req;
}

const getRoles = async (env) => {
    let response await fetch(roleUrl); // awaiting fetch promise
    let roles = await response.json(); // awaiting .json()-promise
    let rolesList = [];
    roles.map(x => {
        const roleObj = {
            name: x.name,
            id: x.id,
        }
        rolesList.push(roleObj);
    })
    return setEnviroment(rolesList, env);
 };
 // async always returns a promise

module.exports = getRoles;
class Config{

url;
rolesList;

constructor(callback){

    var baseurl = 'www.example.com/env';

    fetch(baseurl)
        .then(response => response.json())
        .then(data => {
            this.url = data.url;
            getAuth(data.env);
    }).catch((error) => {

    });

    const getAuth = async (env) => {
        const headers = { 'Content-Type': 'application/json' };
        const options = { method: 'POST', headers, body:JSON.stringify(rolesJson(env))};
        console.log("THIS BODY SHOULD NOT BE UNDEFINED", options.body);
        const response = await fetch('www.example.com/auth', options);
        const body = await response.json();
        return body; // we return a Promise including the body
    };
}    
}
module.exports = Config;
// calling method

const callerMethod = async () => {
    const auth = await Config.getAuth(env);
    const roles = await getRoles(env);
    //now you can work with the resolved stuff
};

कृपया ध्यान दें, कि callerMethod वापसी करेंगे वादा करता हूँ खुद को फिर से, क्योंकि यह async.

2021-11-23 07:44:07

वहाँ एक तरीका है करने के लिए नहीं बनाने के लिए किसी अन्य विधि की तरह callerMethod? बदलने की तरह में roles.js या getAuth में config.js
Tian Qin

हाँ, आप का उपयोग कर सकता है .फिर और .वहाँ पकड़ अगर आप चाहते हैं. यह है क्यों कई devs का उपयोग async के माध्यम से पूरे codebase
Marcel Cremer

मैं जोड़ने की कोशिश की .फिर और .पकड़ में getAuth, यह काम नहीं कर रहा है..और पूरी बात में लपेटा जाता है एक निर्माता है, मैं नहीं डाल सकते हैं async पर निर्माता..
Tian Qin

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में