コードは IPFS (Inter-planetary file-system) 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()
関数は 3 つの引数を取ります – オブジェクトがなくoptions
(ユーザーがそれを省略した)、それが関数に置き換えられた場合: ユーザーは代わりにコールバック関数を実装しようとしています – コールバックを変更しますにopts
; cb = opts
.
&&
次に、引用されたファイルが で始まるテキスト ファイルである場合、http
それは明らかにリモートでホストされているため、 を使用して取得する必要がありWreck
ます。
これはすべて理解できますが、なぜ(send) =>
アロー関数を使用しているのですか? なぜ使用するのreturn function add...
ですか?と は何send('add', null, opts, res, cb)
にreturn send('add', null, opts, res, cb)
使われますか? コールバック ( ) はどのようにcb
実装されていますか? ここで何が起こっているのかを理解するのを手伝ってください