代码来自 IPFS(星际文件系统)HTTP API JS 实现:https ://github.com/ipfs/js-ipfs-api/blob/master/src/api/add.js
'use strict'
const Wreck = require('wreck')
module.exports = (send) => {
return function add(files, opts, cb) {
if (typeof(opts) === 'function' && cb === undefined) {
cb = opts
opts = {}
}
if (typeof files === 'string' && files.startsWith('http')) {
return Wreck.request('GET', files, null, (err, res) => {
if (err) return cb(err)
send('add', null, opts, res, cb)
})
}
return send('add', null, opts, files, cb)
}
}
所描述的add()
函数是用于将数据推送到 IPFS 的函数。
我将首先解释我的理解:该add()
函数接受三个参数——如果没有options
对象(用户省略它)并且它被一个函数替换:用户正试图实现一个回调函数——更改回调到opts
; cb = opts
.
其次,如果引用的文件是一个&&
以 - 开头的文本文件,http
它显然是远程托管的,我们需要使用Wreck
.
这一切我都明白,但我们为什么要使用(send) =>
箭头函数呢?我们为什么要使用return function add...
?send('add', null, opts, res, cb)
和return send('add', null, opts, res, cb)
用于什么?回调 ( cb
) 是如何实现的?帮助我了解这里发生了什么