API вызывает циклы for и присваивает значения в одну переменную, чтобы они были доступны извне - nodejs - PullRequest
2 голосов
/ 10 октября 2019

Я пытаюсь получить доступ к своему API с помощью цикла, так как это одно из моих требований. Код, который я написал ниже:

 currentWeekStartDate = (new Date(requestStartDate));
                 currentWeekEndDate = (new Date(requestEndDate));
                 let currentWeekStartDateNew = (new Date(requestStartDate));
                 let currentWeekEndDateNew = (new Date(requestEndDate));
                 console.log("testing ZONE");
                 /*test zone */
                 let outerEventArray = [];
                 while (currentWeekStartDateNew.getDate() !==currentWeekEndDateNew.getDate()){
                    console.log(currentWeekStartDateNew);
                     let startTIme = new Date(currentWeekStartDateNew);
                     let endTime = new Date(currentWeekEndDateNew);
                     startTIme.setHours(startHour,startMinute,0,0);
                     endTime.setHours(endHour,endMinute,0,0)
                  while(startTIme.getHours() !== endTime.getHours()){
                      let newStartTime = new Date(startTIme);
                      newStartTime.setHours(startTIme.getHours() + 1);

                    let firstTimeArg = startTIme.toISOString().replace("Z", "0000");
                    let secondTimeArg = newStartTime.toISOString().replace("Z", "0000");
                    let returnVal = getEventArray(access_token, firstTimeArg,secondTimeArg).then(res => {
                        return res;
                    });
                    if(returnVal !== null){
                        console.log("returnVal");
                           console.log(returnVal);
                           outerEventArray.push(returnVal);
                        console.log("returnVal");
                    }
                    /*
                        function
                    */
                    startTIme = new Date(newStartTime);
                }
                currentWeekStartDateNew.setDate(currentWeekStartDateNew.getDate() + 1);
            }
            console.log("outerEventArray");
            console.log(outerEventArray);
            console.log("outerEventArray");

, и моя функция для вызова API -

getEventArray = async(access_token, startArguement,endArguement)  => {

let eventVal;
let urlVal = "https://graph.microsoft.com/v1.0/users/" + user + "/calendarview?startdatetime=" + startArguement + "&enddatetime=" + endArguement + "";
request.get({
    url: urlVal,
    headers: {
        "Authorization": "Bearer " + access_token
    }
}, function (err, response, body) {
    let bodyJSON = JSON.parse(body);
    eventVal = bodyJSON.value;
    if(eventVal == null){
        console.log("eventVal is null");
    }
    else{
        let eventArray = [];
        for (let valueVal of Object.values(eventVal)) {
            let eventStartTime = valueVal.start.dateTime;
            let eventEndTime = valueVal.end.dateTime;
            if (!((eventStartTime[eventStartTime.length - 1] === 'Z') || (eventStartTime[eventStartTime.length - 1] === 'z'))) {
                eventStartTime = eventStartTime + "Z";
            }
            if (!((eventEndTime[eventEndTime.length - 1] === 'Z') || (eventEndTime[eventEndTime.length - 1]) === 'z')) {
                eventEndTime = eventEndTime + "z"
            }
            eventArray.push({ start: new Date(eventStartTime).toLocaleString(), end: new Date(eventEndTime).toLocaleString() });
        }
        console.log(eventArray);
       return eventArray;
    }

});
 }

Однако я не могу получить значение externalEventArray снаружи. Мое требование состоит в том, чтобы получить доступ снаружи со всеми заполненными данными. Есть ли способ, которым это возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...