iT邦幫忙

0

C#跟JaveScript的非同步差異在哪

小弟最近
在ASP.NET MVC練習做網頁,有課程介紹ajax做非同步操作。
先前在讀C# .net元件開發也有一門課介紹到非同步教導使用async和await設計非同步程式
不曉得兩者通差異哪,運用的時機點在哪
請教各位大神解惑

2 個回答

1
微甜的酸
iT邦新手 4 級 ‧ 2020-11-15 19:33:55

異步(Asynchronous)是用在單執行緒上,透過分發任務來達到提高執行效率的一種設計模式。使用時主要有三種的使用方式:

  1. 等待直到完成
    在等待的同時,可以做其他事情,等到沒事做了再回來接。
  2. 回呼(Callback)
    就是將函數作為參數帶入另一個函數的函數。或更直白的講,在函數外部呼叫該函數。
  3. 輪詢(Polling)
    簡單講就是每繞一圈,就詢問資料是否可供讀取。

觀念應該都差不多。

在Java Script中,由於需要同時handle多個請求,於是採用了非同步的方式:在沒有請求時,先做其他事情,直到某個函數被激活才去做,達到了看似同時的效果。

Jimmy iT邦新手 5 級 ‧ 2020-11-17 23:11:42 檢舉

感謝解惑

1
japhenchen
iT邦大師 1 級 ‧ 2020-11-16 08:14:52

非同步(異步)差不多,都是為了不讓某件工作而造成整個程式停擺的做法,,該工作任務不跟主程式相依,不管成功或因為網路或對方伺服器的失敗,都不會造成主程式的錯誤而停擺,所有成功或失敗都不該由主程式來負責處理,而是由異步委派delegate/回呼callback的函數方法來解決

個人觀點: 非同步跟多執行緒無關

白話一點,老大(主程式)叫小弟去買一包菸,又叫另一個小弟去買酒,就算這兩個小弟在路上被人幹掉,也不會影響大哥的未來,頂多就是想抽的菸沒買到,看是要另外找人去買,還是要放棄抽菸(檢查口袋沒菸),或是自己出去買...

因為網路會出的狀況太多,不可以太過期待非同步的工作一定會完成

賽門 iT邦超人 1 級 ‧ 2020-11-16 11:51:46 檢舉

這老大被仇家追殺跑路中, 小弟成了過河卒子.

Jimmy iT邦新手 5 級 ‧ 2020-11-17 23:11:50 檢舉

感謝解惑

我要發表回答

立即登入回答