2016-06-24 4 views
0

좋아, 그래서 parse.com cloude 코드를 사용하여 일련의 작업을 수행하는 자바 스크립트를 작성하고 있습니다. 그러나 변수 aToken과 변수 금액은 성공적으로 변경되지 않습니다. 각 호출의 성공 함수가 자동으로 반환되지 않으므로 변수가 다음 태스크에서 실행되어야 할 필요가 있으므로 아직 정의되지 않았습니다. 내 코드는 아래와 같습니다.변수가 정의되지 않은 상태로 돌아 가기

Parse.Cloud.define("cb_clean", function (request, response) { 
    Parse.Cloud.useMasterKey(); 
    var aToken; 
    Parse.Cloud.httpRequest({ 
     method : 'POST', 
     url : 'https://v2.api.xapo.com/oauth2/token', 
     headers : { 
      'Content-Type' : 'application/x-www-form-urlencoded', 
      'Authorization' : 'Basic PERSONAL_INFO_HERE' 
     }, 
     body : 'grant_type=client_credentials&redirect_uri=PERSONAL' 
    }).then(function (httpResponse) { 
     var jsonResponse = JSON.parse(httpResponse.text); 
     aToken = jsonResponse.access_token; 
     console.log("successs message is "+aToken); 
     return aToken; 
     response.success(aToken); 
    }, function (httpResponse) { 
     aToken = "error"; 
     console.log("error message is "+aToken); 
     response.error(httpResponse.text) 
    }); 
    console.log("message is "+aToken); 
    var Satoshi = Parse.Object.extend("Satoshi"); 
    var responser = ""; 
    var amount = 0; 
    var query = new Parse.Query(Satoshi); 
    query.get(request.params.objectid, { 
     success : function (sat) { 
      amount = sat.get("satoshi"); 
      return amount; 
      response.success(1); 
     }, 
     error : function (Object, error) { 
      response.error(-1); 
     } 
    }); 
    var body = "{\"to\": \"" + request.params.to + "\", \"amount\": " + amount + ", \"currency\": \"SAT\", \"notes\": \"Happy Earning\", \"type\": \"pay\"}" 
     var add = 'Bearer '; 
    var tokens = add + aToken; 
    Parse.Cloud.httpRequest({ 
     method : 'POST', 
     url : 'https://v2.api.xapo.com/accounts/PERSONAL/transactions', 
     headers : { 
      'Authorization' : tokens, 
      'Content-Type' : 'application/json', 
     }, 
     body : body 
    }).then(function (httpResponse) { 
     response.success(tokens); 
    }, function (httpResponse) { 
     response.error(tokens); 
    }); 

}); 

답변

0

나는 이것을 테스트 할 수는 없지만 뭔가 할 수 있습니다. 사실 API 호출은 비동기식이며 값을 얻기 전에 tokenamount을 사용하고 있습니다.

Parse.Cloud.define("cb_clean", function(request, response) { 
    Parse.Cloud.useMasterKey(); 
    var aToken; 
    Parse.Cloud.httpRequest({ 
    method: 'POST', 
    url: 'https://v2.api.xapo.com/oauth2/token', 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded', 
     'Authorization': 'Basic PERSONAL_INFO_HERE' 
    }, 
    body: 'grant_type=client_credentials&redirect_uri=PERSONAL' 
    }).then(function(httpResponse) { 
    var jsonResponse = JSON.parse(httpResponse.text); 
    aToken = jsonResponse.access_token; 
    console.log("successs message is " + aToken); 
    return aToken; 

    }, function(httpResponse) { 
    aToken = "error"; 
    console.log("error message is " + aToken); 
    response.error(httpResponse.text); 
    }).then(function(token) { 

    }); 

    function getStoshis(token) { 
    var Satoshi = Parse.Object.extend("Satoshi"); 
    var responser = ""; 
    var amount = 0; 
    var query = new Parse.Query(Satoshi); 
    query.get(request.params.objectid, { 
     success: function(sat) { 
     amount = sat.get("satoshi"); 
     getTransactions(token, amount); 
     return amount; 
     }, 
     error: function(Object, error) { 
     response.error(-1); 
     } 
    }); 
    } 
    console.log("message is " + aToken); 

    function getTransactions(token, amount) { 
    var body = "{\"to\": \"" + request.params.to + "\", \"amount\": " + amount + ", \"currency\": \"SAT\", \"notes\": \"Happy Earning\", \"type\": \"pay\"}"; 
    var add = 'Bearer '; 
    var tokens = add + token; 
    Parse.Cloud.httpRequest({ 
     method: 'POST', 
     url: 'https://v2.api.xapo.com/accounts/PERSONAL/transactions', 
     headers: { 
     'Authorization': tokens, 
     'Content-Type': 'application/json', 
     }, 
     body: body 
    }).then(function(httpResponse) { 
     response.success(tokens); 
    }, function(httpResponse) { 
     response.error(tokens); 
    }); 
    } 
}); 
+0

이 작업이 완료되지 않았습니다. getStoshis 메소드를 시작하지만 성공 또는 오류 함수가 호출됩니다. 거기서 멈추는 것처럼 보입니다. 나는 콘솔 파일을 읽음으로써 점검했다. –

관련 문제