Tài liệu: Gọi phương thức Remote Scripting bất đồng bộ
Remote scripting cung cấp cho bạn tùy chọn gọi phương thức máy chủ một cách bất đồng bộ — khi phương thức máy chủ đang được thực thi, script phía khách vẫn tiếp tục chạy. Gọi bất đồng bộ phương thức remote scripting giúp bạn tránh làm chậm giao diện người dùng của ứng dụng, vì bạn có thể tiếp tục làm việc trong khi script máy chủ đang thực hiện.
Lưu ý: Nếu ứng dụng của bạn yêu cầu, bạn cũng có thể gọi phương thức máy chủ đồng bộ. Để biết thêm chi tiết, xem phần Gọi đồng bộ phương thức Remote Scripting.
Gọi bất đồng bộ một remote script tương tự như gọi đồng bộ. Tuy nhiên, khi tạo lời gọi, bạn cần chỉ định thêm tối đa ba tham số bổ sung:
Khi phương thức máy chủ xử lý xong, một hàm callback JavaScript sẽ được gọi trong script phía khách của người dùng. Ví dụ, nếu phương thức remote scripting kiểm tra cơ sở dữ liệu, thì hàm callback có thể nhận giá trị kiểm tra trả về và hiển thị nó trên một điều khiển nào đó trong trang.
Một hàm callback xử lý lỗi JavaScript tùy chọn — nếu xảy ra lỗi trong quá trình gọi bất đồng bộ, hàm này sẽ được gọi.
Một tham số ngữ cảnh tùy chọn. Đây là dữ liệu mà người dùng truyền vào phương thức và sau đó được trả lại. Nó thường được dùng để giúp bạn xác định phương thức nào đang được gọi trong callback của bạn — ví dụ, nếu bạn đang chuyển tất cả lời gọi remote script về cùng một hàm callback.
Tương tự như gọi đồng bộ, gọi bất đồng bộ tạo ra một đối tượng gọi, đối tượng này hỗ trợ các thuộc tính chứa giá trị trả về và thông tin trạng thái của quy trình được gọi. Ví dụ, giá trị trả về của phương thức remote scripting có thể được lấy thông qua thuộc tính return_value
của đối tượng gọi. Khi gọi bất đồng bộ, thuộc tính status
của đối tượng gọi sẽ cung cấp thông tin trạng thái của lời gọi.
Khi bạn thực hiện một lời gọi bất đồng bộ, đối tượng gọi sẽ được truyền làm tham số cho hàm callback. Điều này giúp bạn kiểm tra nó trong script gọi (ví dụ, để quyết định trạng thái gọi) hoặc kiểm tra trong hàm callback (ví dụ, để lấy giá trị trả về của phương thức).
Nếu bạn đã tạo một tham chiếu đối tượng đến một trang máy chủ, thì bạn có thể gọi phương thức bằng cú pháp tiêu chuẩn object.method
. Để biết thêm thông tin về cách tạo tham chiếu đối tượng, xem phần “Tham chiếu trang ASP dưới dạng đối tượng”.
Cách gọi bất đồng bộ phương thức máy chủ
Nếu người dùng đã tạo tham chiếu đối tượng đến trang máy chủ, thì có thể sử dụng cú pháp sau. Do bạn phải truyền con trỏ đến hàm callback, nên với lời gọi bất đồng bộ bạn phải sử dụng JavaScript:
callObject = ASPObject. methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
– Hoặc –
Nếu bạn chưa tạo tham chiếu đối tượng, bạn có thể gọi hàm RSExecute
với cú pháp sau:
callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
Trong đó:
ASPObject – Tham chiếu đối tượng bạn đã tạo trước đó bằng phương thức RSGetASPObject
. Xem thêm ở phần Tham chiếu trang ASP dưới dạng đối tượng.
callObject – Tên của đối tượng gọi sẽ được khởi tạo khi lời gọi remote scripting hoàn tất. Bạn không cần tạo đối tượng này trước khi gọi remote script; phương thức RSExecute
sẽ tạo giúp bạn.
url – URL của trang ASP chứa remote script mà bạn muốn thực hiện. Trang máy chủ phải được cấu hình đúng như mô tả trong phần “Kích hoạt Remote Scripting trên trang máy chủ”. Trang máy chủ này phải nằm trên cùng máy chủ với trang khách đang gửi yêu cầu.
methodName – Tên của phương thức trên trang máy chủ mà bạn muốn thực thi.
p1, p2, … – Các tham số cần thiết cho phương thức methodName
. Các tham số được truyền theo kiểu giá trị. Bạn có thể truyền kiểu dữ liệu đơn giản như số hoặc chuỗi văn bản, nhưng không thể truyền mảng hoặc đối tượng.
Lưu ý: Khi truyền tham số từ phía khách sang phía máy chủ, chúng sẽ được chuyển thành chuỗi. Đảm bảo phương thức máy chủ chuyển chúng lại thành đúng kiểu dữ liệu khi sử dụng. Xem phần “Kích hoạt Remote Scripting trên trang máy chủ” để biết thêm chi tiết.
callbackFunction – Con trỏ đến hàm JavaScript trong script phía khách của bạn sẽ được gọi khi phương thức remote scripting hoàn tất. Do bạn đang truyền con trỏ nên KHÔNG được đặt tên hàm trong dấu nháy. Việc bao gồm tên hàm callback trong lời gọi RSExecute
nghĩa là bạn muốn thực thi remote scripting theo cách bất đồng bộ.
errorCallbackFunction – Con trỏ đến một hàm JavaScript tùy chọn trong script phía khách sẽ được gọi nếu xảy ra lỗi trong quá trình thực hiện phương thức remote scripting. Do đây là một con trỏ, KHÔNG được đặt trong dấu nháy. Xem phần “Kiểm tra lỗi” để biết thêm thông tin.
context – Giá trị tùy chọn mà bạn truyền vào phương thức remote scripting và được trả lại bạn. Bạn có thể sử dụng nó trong hàm callback của mình theo bất kỳ cách nào thấy hữu ích.
Ví dụ, đoạn mã sau trong trình xử lý onclick
của nút btnSquare
sẽ gọi phương thức máy chủ square
để tính bình phương của giá trị trong ô nhập txt1
. Sau khi phương thức thực hiện xong, nó sẽ gọi hàm showResults
. Tên phép toán (“tính bình phương”) được truyền trong tham số ngữ cảnh.
<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
rsMath = RSGetASPObject("../myPages/RSMath.asp")
number1 = txt1.value;
context = "squaring";
co = rsmath.square(number1,showResults,context);
</SCRIPT>
Sử dụng RSExecute
thay vì tham chiếu đối tượng, ví dụ tương tự như sau:
<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
number1 = txt1.value;
context = "squaring";
co = RSExecute("RSmath.asp","square",number1,showResults,context);
</SCRIPT>
Hàm showResults
là hàm callback trong ví dụ trên, có thể như sau:
<SCRIPT LANGUAGE="javascript">
function showResults(co){
typeOp = co.context;
rValue = co.return_value;
txt2.value = "Result of " + typeOp + " operation = " + rValue;
}
<SCRIPT>
Trong trường hợp này, hàm showResults
có thể được sử dụng như một hàm callback tổng quát để hiển thị giá trị của bất kỳ phép toán nào. Hàm này cho thấy người dùng có thể sử dụng thuộc tính context
của đối tượng gọi (được khởi tạo khi gọi hàm remote scripting) để quyết định xử lý gì trong hàm callback.
Kiểm tra lời gọi bất đồng bộ
Người dùng có thể kiểm tra trạng thái của một lời gọi từ xa để xác định liệu lời gọi có thành công hay không. Nếu đã thực hiện một lời gọi bất đồng bộ, bạn có thể kiểm tra xem lời gọi đã hoàn tất chưa.
Cách kiểm tra trạng thái của một lời gọi từ xa
Trong script gọi, truy cập thuộc tính status
của đối tượng gọi, giá trị có thể là một trong những giá trị sau:
Giá trị | Mô tả |
---|---|
-1 | Thất bại |
0 | Hoàn tất |
1 | Đang chờ (chỉ có trong quá trình gọi bất đồng bộ) |
Ví dụ sau minh họa cách gọi đồng bộ một phương thức remote scripting tên là square
, sau đó hiển thị trạng thái gọi trong một ô nhập trên trang:
<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
number1 = txt1.value;
context = "squaring";
co = RSExecute("RSmath.asp","square",number1);
if (co.status == -1)
{txt2.value = "Call failed";}
else
{txt2.value = "Call succeeded, return value = " + co.return_value;} }
</SCRIPT>
Để biết thêm chi tiết về lỗi, hãy xem phần “Kiểm tra lỗi”.
Kiểm soát lời gọi bất đồng bộ
Khi thực hiện gọi bất đồng bộ, bạn có hai cách để kiểm soát nó:
-
Chờ lời gọi hoàn tất. Cách này sẽ tạm dừng xử lý script phía khách cho đến khi lời gọi remote scripting hoàn tất, về bản chất biến lời gọi bất đồng bộ thành đồng bộ. Nếu script của bạn cần thông tin từ lời gọi, bạn có thể làm vậy bằng cách gọi phương thức
wait
trên đối tượng gọi. -
Hủy lời gọi. Để thực hiện việc này, hãy gọi phương thức
cancel
trên đối tượng gọi.
Tài nguyên này được người dùng tải lên và nội dung được lấy từ Internet. Trang web này chỉ giới thiệu miễn phí để học tập và chia sẻ. Nếu có bất kỳ vấn đề bản quyền hoặc vấn đề nào khác, vui lòng liên hệ với biên tập viên của trang web này để xử lý!
Lưu ý quan trọng: : Nếu phần mềm liên quan đến thanh toán, thành viên, nạp tiền, v.v., thì đây là những hành động của nhà phát triển phần mềm hoặc công ty sở hữu phần mềm đó và không liên quan gì đến trang web này. Cư dân mạng cần phải tự đưa ra phán đoán của mình.