내가 이런 간단한 전화 뭔가를해야합니다 어디에 있는 스크립트입니다 날 다시 보기입니다 값을 문자열으로.
function testAjax() {
$.ajax({
url: "getvalue.php",
success: function(data) {
return data;
}
});
}
내가 이 같은 일이 호출하십시오 신앙이니라
var output = testAjax(svar); // output will be undefined...
값을 되돌려줍니다 미확인범은 어떻게 합니까? 아래 코드를 작동합니까 인컨텍스트 않는 듯 하다.
function testAjax() {
$.ajax({
url: "getvalue.php",
success: function(data) {
}
});
return data;
}
function testAjax() {
$.ajax({
url: "getvalue.php",
success: function(data) {
return data;
}
});
}
테스타이아스 다음과 같은 함수를 작성할 수 있습니다
function testAjax() {
return $.ajax({
url: "getvalue.php"
});
}
그런 다음 전달하십시오 약속하나요 다음과 같습니다.
var promise = testAjax();
약속하나요 보관할 수 있습니다, 주위에 있는 함수 호출을 사용할 수 있습니다 인수로 전달할 수 있습니다, 다시 사용할 수 있습니다, 하지만 함수에서 때 마지막으로 AJAX 호출 할 수 있는 데이터의 반환됨 의해 다음과 같은 해야 할 수 있습니다.
promise.success(function (data) {
alert(data);
});
내가 위에서 설명한 (2011년 3월) 는 사용 방법은 [jquery 우회된 객체에는] (https://api.jquery.com/category/deferred-object/) 에서 동기식 코드 값을 반환하는 달성됩니다 비동기적으로 뭔가 해야 될 것 "이라고 말했다. 그러나 이 두 가지 - 값을 반환하는 함수 호출 할 수 있는 동기 중에서 선택할 수 있으며 (수 있을 경우) 또는 예외가 (can& # 39, t 값을 반환하는 경우). 이러한 사례는 거의 모두 promises/a+ 충족합니다 방식으로 exception handling) 는 동기식 코드를 강력하다. 그러나 버전을 포함한다) 에 해당하는 값을 찾는 핸들을 그냥 그랬다고 avamer 다소 복잡한 예외 처리 문제가 됩니다. 특히 전체 집중식으로 exception handling) 하고 있지만, 좋은 메시지를 통해 동기식 코드는 포기하는 것이 아니라 문제를 해결하고 계속하시겠습니까 러스롤링 실행 또는 기타 다른 부위에 같은 일부 또는 다른 예외 처리할 수 있는 프로그램. 코드 s 에서 콜 스택 있습니다. # 39 의 너회가 don& 비동기 호출, t, 예외 처리 인사이드라면 고급 사용자의 요청에 따라 공약을 Promises/A+ 사양명세 실질적으로 지원할 수 있는 의미있는 방식으로 처리할 수 있는 코드를 작성하는 것도 복잡한 예외 오류 및 활용 사례. Jquery 의 차이점 및 기타 구현을 위한 약속, 어떻게 jQuery 변환하십시오 Promises/A+ 호환일 http://schmidt. devlib. [Coming from jQuery] (https://github.com/kriskowal/q/wiki/Coming-from-jQuery) 에 크리스 코발 et al. wiki 의 Q 라이브러리 및 [공약 도착할 JavaScript] (http://www.html5rocks.com/en/tutorials/es6/promises/ # javascript 공약을 목차) 가 html5 에서 제이크 아치볼드 바위.
이 함수는 from my 위 예제:
function testAjax() {
return $.ajax({
url: "getvalue.php"
});
}
jquery 는 한 되돌려줍니다 이크스어 객체에는 [우회된 객체에는] (https://api.jquery.com/category/deferred-object/). 실제 사용 할 수 있습니다 - 복귀하십시오 약속하나요 변경하십시오 [방법을 wiki 의 Q] (https://github.com/kriskowal/q/wiki/Coming-from-jQuery # jquery 변환 약속 q):
function testAjax() {
return Q($.ajax({
url: "getvalue.php"
}));
}
또는 using [방법을 HTML5 에서 바위 문서] (http://www.html5rocks.com/en/tutorials/es6/promises/ # javascript 공약을 목차):
function testAjax() {
return Promise.resolve($.ajax({
url: "getvalue.php"
}));
}
이 '프로미세이어솔베 ($ 지아이아스 (.))' 도 지정하십시오. [설명한 '약속' 모듈에서는 문서용으로] (https://github.com/then/promise # 프로마이어솔베발루) 와 함께 작업하므로 합니다 [ES6 프로미세이어솔베 () ''] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve). 오늘 약속 es6 사용하려면 사용할 수 있는 [es6 약속하나요 module& 폴리필 () ',' s # 39] (https://github.com/jakearchibald/es6-promise # 자동 폴리필) 에서 제이크 아치볼드. 어디서 볼 수 없는 공약을 폴리필 http://schmidt. devlib. ES6 사용할 수 있습니다. [사용할 수 있습니까?: 약속] (http://caniuse.com/promises). 자세한 정보 참조.
이후 버전의 jquery (시작으로 현재 안정 버전은 vmware. 3.x - 5월 2015년 은 1.x 와 2.x) 가 이 호환되어야 [promises/a+ 사양명세] (http://promises-aplus.github.io/promises-spec/) (덕분에 [벤햐민 그루에누스바움] (https://stackoverflow.com/users/1348195/benjamin-gruenbaum) 를 가리키는 아웃해야 정보를). # 39 는 이미 결정한 Promise/A+ 호환성에서는 we& ", 2 개의 변경 사항을, ve 의 우회된 구축상의 [.] ", ([jQuery 3.0 및 향후 웹 개발] (http://sdtimes.com/jquery-3-0-future-web-development/)). 자세한 정보 참조. [jQuery 3.0. 다음 세대] (http://blog.jquery.com/2014/10/29/jquery-3-0-the-next-generations/) 에 donatelli 메트빈 및 [jQuery 3.0. 더 적은 상호 운용성, Internet Explorer] (http://www.infoworld.com/article/2843689/javascript/jquery-3-0-internet-explorer.html) 에서 폴 크릴.
promise.success(function (data) {
alert(data);
});
쓸 수 있습니다.
promise.success(data => alert(data));
사용하거나 Promises/A+ API:
promise.then(data => alert(data));
반드시 항상 flfile. 거부 핸들러도 인컨텍스트 호스트당:
promise.then(data => alert(data), error => alert(error));
또는 호스트당:
promise.then(data => alert(data)).catch(error => alert(error));
항상 flfile. 거부 이유를 알 수 있는 이 슬라이드에서는 오토메이티드 핸들러도 약속을 합니다.
물론 그냥 예제에서와 프로미시스탕 (경고) ',' 사용할 수 있기 때문에 그냥 '경고' 를 호출하십시오 you& # 39 와 같은 주장을 하고 있지만, 더 일반적인 콜백하는 누르십시보 구문은 다음과 같은 것을 쓸 수 있습니다
promise.then(data => alert("x is " + data.x));
이 구문은 않을 경우, 모든 브라우저는 아직 수축됐는데 you& 코드에서 # 39 를 실행할 수 있는지, 어떤 특정 브라우저를 쓸 때 re - [크롬 확장명은] (예: https://developer.chrome.com/extensions/getstarted) 는 [Firefox Add-on] (https://developer.mozilla.org/en-US/Add-ons) 또는 사용하는 데스크톱 응용 프로그램 또는 전자, n w.j스 마카베이스 (http://otl. [이 오토메이티드] (https://stackoverflow.com/questions/35803346/i-want-to-use-nodejs-as-front-end-and-back-end-in-my-application-can-you-sugges/35888163 # 35888163) 를 참조). 화살표 기능 지원을 위한 http://schmidt. devlib.:
업데이트 (2017년)
functionReturningPromise()
.then(data => console.log('Data:', data))
.catch(error => console.log('Error:', error));
작성할 수 있습니다.
try {
let data = await functionReturningPromise();
console.log('Data:', data);
} catch (error) {
console.log('Error:', error);
}
내부에 있는 '키워드' 비동기 만든 함수를 때만 사용할 수 있습니다. 자세한 내용, 지켜보리니:
또 다른 몇 가지 질문에 대한 자세한 내용은 그렇다.
[Q 약속하나요 지연입니다] (https://stackoverflow.com/questions/41287845/node-q-promise-delay/41287978 # 41287978) *
데이터가 동기화 기능을 할 수 있는 유일한 방법은 반품하십시오 약간만이라도 호출하십시오 비동기 호출 대신 있으나, 그 위로 it& 기다리는 동안 # 39 의 응답 있지만브라우저에 동결시킬 것이라고 발표했다.
그 결과 처리하는 콜백 함수를 통과될 수 있습니다.
function testAjax(handleData) {
$.ajax({
url:"getvalue.php",
success:function(data) {
handleData(data);
}
});
}
Call it 다음과 같습니다.
testAjax(function(output){
// here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.
나도 몰라 경우 보세요들 해결 있지만 또 다른 방법은 내가 추천합니까 그것을하지 및 작동하잖아:)
ServiceUtil = ig.Class.extend({
base_url : 'someurl',
sendRequest: function(request)
{
var url = this.base_url + request;
var requestVar = new XMLHttpRequest();
dataGet = false;
$.ajax({
url: url,
async: false,
type: "get",
success: function(data){
ServiceUtil.objDataReturned = data;
}
});
return ServiceUtil.objDataReturned;
}
})
그래서 그 주된 아이디어는 슬라이드에서는 추가하기만 비동기: 거짓값 때까지 기다린 후 모든 것을 할 수 있는 데이터 읽어들여집니다. 그런 다음, 모든 클래스의 정적 변수가 할당하십시오 마술로 작동됨:)
Jquery 예제 문서 참조. http://api.jquery.com/jQuery.ajax/ (약 2/3 이 페이지)
다음과 같은 코드를 찾는 수 있습니다.
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
alert('Load was performed.');
}
});
동일한 페이지오로르 아래에있어.