Javascript从承诺中设置全局变量
我试图调用一个执行承诺链的函数(fetchdat),这个承诺链应该通过将全局变量(fromdetails)设置为执行返回的结果(AccountDetails)来结束 当我尝试将fromdetails登录到控制台时,我得到一个未定义的错误 我读了一些书,似乎你不能从承诺中设置全局变量,但是什么是使(fromdetails)等于我承诺结果的最佳方法Javascript从承诺中设置全局变量,javascript,html,css,promise,Javascript,Html,Css,Promise,我试图调用一个执行承诺链的函数(fetchdat),这个承诺链应该通过将全局变量(fromdetails)设置为执行返回的结果(AccountDetails)来结束 当我尝试将fromdetails登录到控制台时,我得到一个未定义的错误 我读了一些书,似乎你不能从承诺中设置全局变量,但是什么是使(fromdetails)等于我承诺结果的最佳方法 // This section decalres all variables to be parsed Back var username = ""
// This section decalres all variables to be parsed Back
var username = "";
var password = "";
var SessionID = "BE302FC72B1546A89";
var IuserID = "1107385";
var AcctDetails = "";
//from account details go here
var fromacctname = "";
var fromacctnumber = "";
var fromacctHIN = "";
var fromacctID;
var fromdetails;
// This function retrieves accountID based on account number
function AccountID(AccountNumber) {
return new Promise(function (resolve, reject) {
// This HTTP request retrieves the account ID based on an account number
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://autobots.avanteos.com.au/py/AccountID.py?SessionId=' + SessionID + '&UserId=' + IuserID + '&AccountNumber=' + AccountNumber, false)
xhr.send()
console.log(xhr.responseText);
resolve(xhr.responseText);
});
};
// this function is used to fetch the account details taking acctid as an input
function AccountDetails(AcctID) {
return new Promise(function (resolve, reject) {
// This is a HTTP request to fetch the account details
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://autobots.avanteos.com.au/py/CGiscript.py?SessionId=' + SessionID + '&UserId=' + IuserID + '&AccountID=' + AcctID, false)
//xhr.open('GET', 'http://autobots.avanteos.com.au/py/CGiscript.py?SessionId=48B18C24724B488B&UserId=1107385&AccountID=3672253', false)
xhr.send()
var jsonresponse = JSON.parse(xhr.responseText);
resolve(jsonresponse);
});
}
// this function goes to get our data
function fetchdat(callback) {
//this code kicks off the details search
AccountID("8308184").then(function (result) {
fromacctID = result;
console.log(fromacctID);
}).then(function () {
return AccountDetails(fromacctID)
}).then(function (result) {
fromdetails = result; // this is where i set the global variable equals to the result returned from Accountdetails
})
console.log(fromdetails);
}
根本不要使用全局变量。相反,将所有依赖于值的逻辑放在
中。然后
我有一个函数,它需要来自全局变量的输入,我会在中执行该函数吗?是的,它就是这样工作的