我正在阅读一篇文章Promises
我遇到了Promise.fromCallBack
。我浏览了这篇文章但却无法完全理解它。
任何人都可以解释Promise.fromCallBack做什么以及何时使用它?
答案 0 :(得分:0)
<强> TL; DR 强>
Promise.fromCallBack returns a promise。如果要在运行中将函数包装在promise中,则使用此方法。
const Promise = require('bluebird')
const User = require('./models/user')
return Promise.fromCallback((cb) => {
User.findById(ID, cb)
})
.then(user => console.log(user))
基本上是
const Promise = require('bluebird')
const User = require('./models/user')
return // the result of User.findById(ID) in a resolver function
.then(user => console.log(user))
更长的版本:
基于the original blog,
Promise.fromCallback
是使用Promise((resolve, reject))
return new Promise((resolve, reject) => {
User.findById(ID, (err, user) => {
if (err) {
return reject(err)
}
return resolve(user)
})
})
.then(user => console.log(user))
基于bluebird description of new Promise
,上述代码为User.findById(ID, callback)
创建了一个承诺,除了将其包装在解析器函数(resolve, reject) => {}
中。
User.findById(ID, resultCallback)
表示:
User.findById(ID).then((user) => {...}).catch((err) => {})
.then
部分由resolve()
创建,.catch
部分由reject()
创建。现在,解析器基本上创建了reject
和resolve
函数。
在博客中,我们可以看到promise.fromCallback
传递回调函数而不是手动创建解析器函数。
return Promise.fromCallback((cb) => {
User.findById(ID, cb)
})
.then(user => console.log(user))
这基本上包含了promise中回调的结果并解析/拒绝它。
答案 1 :(得分:-1)
回调函数源自称为函数式编程的编程范例。在基础层面,函数式编程指定函数作为参数的使用。
回调函数,也称为高阶函数,是一个传递给另一个函数的函数(让我们将其他函数调用“otherFunction”)作为参数,并在内部调用(或执行)回调函数另一个功能。回调函数本质上是一种模式(对常见问题的既定解决方案),因此,回调函数的使用也称为回调模式。
let promise = doSomething();
promise.then(successCallback, failureCallback);
&#13;