Promise 使用技巧九則

2021-09-20 08:40:46 字數 3172 閱讀 3823

.then(r =>  promise

return serverstatuspromise(r);

}).then(resp => )

var statusprom = fetchserverstatus();

var proma = statusprom.then(r => (r.statuscode === 200 ? "good" : "bad"));

var promb = proma.then(r => (r === "good" ? "all ok" : "notok"));

var promc = statusprom.then(r => fetchthisanotherthing());

function

yourfunc()

function

youreviluncle(prom)

return

newpromise((res, rej) => );

});

// 錯誤用法

return

newpromise((res, rej) => )

.catch(err => rej(err))

})// 正確用法

// 看上去對就是對的

return fetchsomedata(...);

const  = require('util');

const fs = require('fs');

const readfileasync = promisify(fs.readfile);

readfileasync('myfile.txt', 'utf-8')

.then(r => console.log(r))

.catch(e => console.error(e));

var similarprom = new

promise(res => res(5));

// 相當於

var prom = promise.resolve(5);

// 將乙個同步函式轉成非同步的

function

foo()

function

goodprom(maybepromise)

goodprom(5).then(console.log); // 5

// 這個 promise resolve 成 5

var sixpromise = fetchmenumber(6);

goodprom(sixpromise).then(console.log); // 6

// 5,注意,每層 promise 都被自動 unwrap 了

goodprom(promise.resolve(promise.resolve(5))).then(console.log);

var rejprom = new

promise((res, reject) => reject(5));

rejprom.catch(e => console.log(e)) // 5

function

foo(myval)

return

newpromise((res, rej) => )

}

.then(val => 

}).catch(e => console.log(e)) // not good

接受乙個 promise 的陣列

等待所有這些 promise 完成

返回乙個新的 promise,將所有的 resolve 結果放進乙個陣列裡

只要有乙個 promise 失敗/rejected,這個新的 promise 將會被 rejected

var prom1 = promise.resolve(5);

var prom2 = fetchserverstatus(); // returns a promise of

proimise.all([prom1, prom2])

.then([val1, val2] => )

var prom1 = promise.reject(5);

var prom2 = fetchserverstatus(); // returns a promise of

proimise.all([prom1, prom2])

.then([val1, val2] => )

.catch(e => console.log(e)) // 5, jumps directly to .catch

return fetchsomedata(...);

.catch(e => )

.then(r => )

.catch(e => )

.catch(e => )

.then(r => )

.catch(e => )

.then(function() ).catch(function(e) );

.then(function() , function(e) );

// 錯誤用法

request(opts)

.catch(err =>

})// 正確用法

request(opts)

.catch(err =>

return

promise.reject(err);

}).then(r => r.text())

.catch(err => console.erro(err));

.then(myval => )

})

.then(myval => )

.then(([vala, valb]) => )

Linux使用技巧33則

原貼 http www.turingtoday.net www articlecontent.asp?id 2206 1 host的樂趣 host能夠用來查詢網域名稱,然而它可以得到更多的資訊。host t mx linux.com可以查詢出linux.com的mx記錄,以及處理mail的host的...

Word使用技巧五則

一 使用格式刷 在word中,可以使用 格式刷 方便地將某種格式複製到多個段落,操作方法為 1 選定要進行格式複製的文字,雙擊 格式刷 工具按鈕,這時滑鼠指標會變成格式刷形狀 2 將滑鼠移至要改變格式的段落,單擊滑鼠左鍵,或者在文件中選定要改變格式的文字 3 重複步驟2,可進行多次複製操作,直到再次...

FlashFXP使用技巧五則

中國電腦教育報 一 讓不同版本flashfxp的站點密碼明文顯示 預設情況下flashfxp的站點管理器密碼以星號密文顯示,不過對於非公共電腦使用者來說,這樣極不方便我們檢視。要讓ftp賬戶密碼以明文的方式顯示,不同版本的flashfxp操作方法不同 老版本flashfxp 2.x以前版本 首先在f...