1 來個簡單的例子
var p = new Promise(function(resolve, reject){ //做一些異步操作 setTimeout(function(){ console.log('2秒后執行完成Promise'); }, 2000); }); var p = new Promise(function(resolve, reject){ //做一些異步操作 setTimeout(function(){ console.log('1秒后執行完成Promise'); }, 1000); });
運行結果如下 可以看到2個是異步執行的
2 關於resolve用法(異步操作成功調用)
var p1 = new Promise(function(resolve, reject){ //做一些異步操作 setTimeout(function(){ console.log('執行完成Promise'); resolve('要返回的數據可以任何數據例如接口返回數據'); }, 2000); }); p1.then(function(data){console.log(data)});
異步操作成功后會觸發 resolve函數 里面傳入的參數 會到then的回調函數里
reject寫法我就不說了 感覺用處不大 resolve夠用了
3 異步中的同步的寫法await
function doubleAfter2seconds(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve('2秒后觸發'); }, 2000); } ) } function doubleAfter1seconds(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve('1秒后觸發') }, 1000); } ) } var result = await doubleAfter2seconds(30); console.log(result); var result = await doubleAfter1seconds(30); console.log(result);
ps:要寫在函數里