async/await 迴圈並行處理
同步:同一執行緒之中,順序完成不同的操作,是一種阻塞模式;後乙個請求操作需要等待前乙個操作完成之後,才能發出。
非同步:需要開啟不同的執行緒,是非阻塞模式。
同步類似於打**,而非同步相當於發簡訊。
傳送請求獲取天氣非同步操作,利用node-fetch完成請求
const fetch =
require
("node-fetch");
async
function
getweather
(city)`;
const response =
await
fetch
(url)
const
=await response.
json()
console.
log(data)
}getweather
('深圳'
)
const fetch =
require
("node-fetch");
async
function
getweather
(city)`;
const response =
await
fetch
(url)
return
await response.
json()
}getweather
('深圳').
then((
)=>`)
console.
log(
`天氣:$`
)})
理論上可以作用在所有的物件上,但是非promise物件都會通過promise.resolve()轉成promise物件
const fetch =
require
("node-fetch");
class
apiweather
` const response =
await
fetch
(url)
return
await response.
json()
}};(
async()
=>`)
console.
log(
`天氣:$`
)})(
)
序列是指多個任務時,各個任務按順序執行,完成乙個之後才能進行下乙個。
並行指的是多個任務可以同時執行。非同步是多個任務並行的前提條件。並行用時更短。將請求先賦給變數,await請求變數
通過promise.all(),傳入乙個請求陣列
const fetch =
require
('node-fetch'
)const
sleep
=(timeout =
2000
)=>
newpromise
(resolve =>
)const getweather =
async
(city)
=>
` const response =
await
fetch
(url)
return
await response.
json()
}const showweather =
async()
=>`)
console.
log(
`天氣:$`
) console.
log(
`城市:$`
) console.
log(
`天氣:$`
) console.
timeend
('showweather')}
showweather
()
const fetch =
require
('node-fetch'
)const bluebird =
require
('bluebird'
)const getweather =
async
(city)
=>
` const response =
await
fetch
(url)
return
await response.
json()
}const showweather =
async()
=>`)
console.
log(
`天氣:$`
)}console.
timeend
('showweather')}
showweather
()
async await基本使用
asunc await的底層學習可以學習es6,它其實是乙個genterator的語法糖。執行非同步async function timer 2000 非同步promise結束 console.log ret,num 這裡等待非同步執行完,所以結果是11,11 return ret timer th...
async await使用的要點
async await的使用 1 如果乙個方法標註了async,則其返回值只能是 void,task,task三者之一 2 如果非同步方法中沒有await,那麼這個方法將會以同步方式執行 3 單個async方法中可以擁有多個await 4 當遇到await表示式時,呼叫執行緒將會掛起,知道await...
async await結合axios使用
async 和 await是es7的語法 async和await必須結合使用,有await必須要使用async,有async不一定要使用await,await是將非同步轉為同步 用async修飾的事件,如果有retrun返回,則返回的是promise物件 async修飾的非同步事件a,在其他方法b中...