특히, 기본 ( async: true
) 과 어떻게 다릅니 까?
어떤 상황에서 나는 명시 적으로 설정하려는 것 async
까지 false
, 그리고 발사에서 페이지에 다른 이벤트를 방지과 함께 할 수있는 뭔가가 무엇입니까?
특히, 기본 ( async: true
) 과 어떻게 다릅니 까?
어떤 상황에서 나는 명시 적으로 설정하려는 것 async
까지 false
, 그리고 발사에서 페이지에 다른 이벤트를 방지과 함께 할 수있는 뭔가가 무엇입니까?
답변:
페이지의 다른 이벤트가 실행되지 않도록하는 것과 관련이 있습니까?
예.
async를 false로 설정하면 함수의 다음 명령문을 호출하기 전에 호출중인 명령문이 완료되어야합니다. async : true로 설정하면 해당 명령문이 실행을 시작하고 비동기 명령문이 아직 완료되었는지 여부에 관계없이 다음 명령문이 호출됩니다.
자세한 내용은 jQuery ajax success 익명 함수 범위를 참조하십시오.
async: false
호출에서 비동기 성을 완전히 제거합니다 . ajax
블록 호출 -다음에 오는 코드는 서버가 응답 할 때까지 실행되지 않습니다.
async: false
죽은 것 , 나는 그것을 시도하고있어18:17:49.384 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/ 1 jquery.js:9061:4
비동기 검색을 비활성화하면 요청이 이행 될 때까지 스크립트가 차단됩니다. 비동기 콜백이 더 깨끗하다는 것을 알지만 알려진 순서로 요청 시퀀스를 수행하는 데 유용합니다.
한 가지 사용 사례는 ajax
사용자가 창을 닫거나 페이지를 떠나기 전에 전화를 거는 것입니다. 사용자가 다른 사이트로 이동하거나 브라우저를 닫기 전에 데이터베이스에서 일부 임시 레코드를 삭제하는 것과 같습니다.
$(window).unload(
function(){
$.ajax({
url: 'your url',
global: false,
type: 'POST',
data: {},
async: false, //blocks window close
success: function() {}
});
});
에서
https://xhr.spec.whatwg.org/#synchronous-flag
작업자 외부의 동기 XMLHttpRequest는 최종 사용자의 경험에 해로운 영향을 미치므로 웹 플랫폼에서 제거되고 있습니다. (이 과정은 오랜 시간이 걸린다.) JavaScript 전역 환경이 문서 환경 인 경우 개발자는 비동기 인수에 대해 false를 전달해서는 안된다. 사용자 에이전트는 개발자 도구에서의 이러한 사용에 대해 경고 할 것을 강력히 권장하며 InvalidAccessError 예외가 발생하면이를 실험 해 볼 수 있습니다. 미래의 방향은 작업자 스레드에서만 XMLHttpRequests를 허용하는 것입니다. 메시지는 그러한 영향을 경고하기위한 것입니다.
async를 false로 설정하면 ajax 요청 다음의 지시 사항은 요청이 완료 될 때까지 기다려야 함을 의미합니다. 다음은 코드가 제대로 작동하기 위해 async를 false로 설정해야하는 경우입니다.
var phpData = (function get_php_data() {
var php_data;
$.ajax({
url: "http://somesite/v1/api/get_php_data",
async: false,
//very important: else php_data will be returned even before we get Json from the url
dataType: 'json',
success: function (json) {
php_data = json;
}
});
return php_data;
})();
위의 예는 async : false 사용법을 명확하게 설명합니다 .
그것을 false로 설정함으로써, 우리는 일단 데이터가 url 에서 검색되고, 그 후에 php_data 가 반환 된 후에 만 확인 되도록했다; 라는
return php_data
명령문이 성공 함수에있을 수 없지만 $.ajax()
함수 외부에 있어야 함을 강조 합니다. 나는 return php_data
내부에 해당하는 것을 success: function(){}
이 옵션 10 진수를 사용하십시오 : 3
여기 URL이 있습니다 : https://demos.telerik.com/kendo-ui/numerictextbox/index
<!DOCTYPE html>
<html>
<head>
<base href="https://demos.telerik.com/kendo-ui/numerictextbox/index">
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.default-v2.min.css" />
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script>
</head>
<body>
<div id="example">
<div id="add-product" class="demo-section k-content">
<p class="title">Add new product</p>
<ul id="fieldlist">
<li>
<label>
Price:
<input id="currency" type="number" title="currency" value="30" min="0" max="100" style="width: 100%;" />
</label>
</li>
<li>
<label>
Price Discount:
<input id="percentage" value="0.05" title="percentage" style="width: 100%;" />
</label>
</li>
<li>
<label>
Weight:
<input id="custom" value="2" title="custom" style="width: 100%;" />
</label>
</li>
<li>
<label>
Currently in stock:
<input id="numeric" type="number" title="numeric" value="17" min="0" max="100" step="1" style="width: 100%;" />
</label>
</li>
</ul>
</div>
<script>
$(document).ready(function() {
// create NumericTextBox from input HTML element
$("#numeric").kendoNumericTextBox();
// create Curerncy NumericTextBox from input HTML element
$("#currency").kendoNumericTextBox({
format: "c",
decimals: 3
});
// create Percentage NumericTextBox from input HTML element
$("#percentage").kendoNumericTextBox({
format: "p0",
min: 0,
max: 0.1,
step: 0.01
});
// create NumericTextBox from input HTML element using custom format
$("#custom").kendoNumericTextBox({
format: "#.00 kg"
});
});
</script>
<style>
.demo-section {
padding: 0;
}
#add-product .title {
font-size: 16px;
color: #fff;
background-color: #1e88e5;
padding: 20px 30px;
margin: 0;
}
#fieldlist {
margin: 0 0 -1.5em;
padding: 30px;
}
#fieldlist li {
list-style: none;
padding-bottom: 1.5em;
}
#fieldlist label {
display: block;
padding-bottom: .6em;
font-weight: bold;
text-transform: uppercase;
font-size: 12px;
}
#fieldlist label .k-numerictextbox {
font-size: 14px;
}
</style>
</div>
</body>
</html>