此代码中扩展函数的目的是什么

What is the purpose of spread function in this code?

本文关键字:是什么 函数 扩展 代码      更新时间:2023-09-26

我正在尝试弄清楚如何使用mysql-promise。https://www.npmjs.com/package/mysql-promise

下面是一些示例代码;

var db = require('mysql-promise')();
db.configure({
    "host": "localhost",
    "user": "foo",
    "password": "bar",
    "database": "db"
});
db.query('UPDATE foo SET key = ?', ['value']).then(function () {
    return db.query('SELECT * FROM foo');
}).spread(function (rows) { //what's purpose of spread()?
    console.log('Loook at all the foo', rows);
});

点差函数的目的是什么?它到底有什么作用?

Jaromanda X 是正确的,该示例歪曲了spread

传播的理想用例是当你的回调/链式函数需要多个参数,但一个承诺返回一个值(我们的工作是确保它是链式函数使用的格式的参数数组),所以:

Promise.resolve([1,2,3]).spread(function(a, b, c){  ...

等效于 ( 在 ES6 中):

Promise.resolve([1,2,3]).then( ([a, b, c]) => {  ...

.spread是一个蓝鸟('mysql-promise正在使用的promise库)函数。

基本上,.spread允许您处理来自 promise 的返回值,该值是数组而不是单个值。

有关详细信息,请参阅 http://bluebirdjs.com/docs/api/spread.html。

spread 函数来自 mysql-promise 库附带的 Bluebird promise 库。它解开一个必须返回数组的承诺,并将该数组的每个元素提供给传递给它的函数,在本例中为 mysql 数据库中的行。

来自 github 上的 mysql-promise 的 package.json:

 "dependencies": {
    "bluebird": "^2.10.2",
    "mysql": "^2.10.2"
  },

以下是蓝鸟项目的更多信息:http://bluebirdjs.com/docs/api/spread.html