那天我正在学习 Promise,突然家里打电话过去说,家里盖房子要钱。我任务这么多年了,从事着别人眼中高薪任务,于是满口容许上去。但是由于我并没有钱,于是我跟家里说,等过几天我再打钱过去。我也好乘着这几天想想办法。
首先我找到我的同窗李雷,他如今一个部门经理了,我想应该他应该有钱。我跟他阐明了借钱的意向,李雷二话不说就容许借我300,不过同时表示要回家跟老婆商量商量,我说好。此时我想起来容许或许说承诺的英文单词就是 Promise 。承诺的结果是钱,钱是数值(number 类型)。于是我想把我要借钱的这一行为写成一个 TypeScript 函数如下:
// 向李雷借钱,李雷丢给我一个承诺
function borrowMoneyFromLiLei(): Promise<number> {
return new Promise<number>(function(fulfill, reject) {
// 李雷跟老婆商量中
});
}
此时,我在想李雷老婆会容许给我借300块吗?我不确定,就像薛定谔的猫。借还是不借,这是一个成绩。然后我发现这也可以写成一个函数。借或许不借用布尔值来表示 (boolean 类型)。函数如下:
// 李雷的老婆能否会容许给我借钱?
function willLiLeiWifeLendMeMoeny(): Promise<boolean> {
return new Promise<boolean>(function(lend, reject) {
// 借还是不借
});
}
假设李雷借我钱了,我就转钱给家里,没有,我应该要再去找别人借了。可以用下面的函数描画我此时的处境。
function transferMoneyToHome(money: number) {
// 给家里转钱
}
function mySituation(){
borrowMoneyFromLiLei()
.then((money:number) => {
// 假设李雷借我钱了,我就转钱给家里.
transferMoneyToHome(money)
}).catch((reason) => {
// 李雷老婆拒绝借钱给我。 那我应该思索向其别人借了。
borrowMoneyFromOthers()
})
}
找其别人借,我能想到就(张三,李四,五五)这三团体了,其他的冤家很少联络,突然说借钱也不好。于是我尝试向他们借钱。用代码表示是这样子的:
function borrowMoneyFromOthers() {
// 我先试着向张三借
tryBorrowMoneyFromZhangshan()
.then(money => {
transferMoneyToHome(money);
})
.catch(reason => {
// 假设张三不借,并丢给我一个理由
// 试着向李四借
tryBorrowMoneyFromLisi()
.then(money => {
transferMoneyToHome(money);
})
.catch(reason2 => {
// 假设 李四也不肯错
// 再试试向王五借
tryBorrowMoneyFromWangwu()
.then(money => {
transferMoneyToHome(money);
})
.catch(reason => {
// 没有人肯借
throw new Error("我该怎样办呢?");
});
});
});
}
由于借着钱之后都是向家里转钱,所以下面的代码应该简化一下。简化后如下:
function borrowMoneyFromOthers() {
// 我先试着向张三借
tryBorrowMoneyFromZhangshan()
.then(transferMoneyToHome)
.catch(reason => {
// 假设张三不借,并丢给我一个理由
// 试着向李四借
tryBorrowMoneyFromLisi()
.then(transferMoneyToHome)
.catch(reason2 => {
// 假设 李四也不肯错
// 再试试向王五借
tryBorrowMoneyFromWangwu()
.then(transferMoneyToHome)
.catch(reason => {
// 没有人肯借
throw new Error("我该怎样办呢?");
});
});
});
}
(责任编辑:admin)