为什么我需要使用回调是这种情况

Why do I need to use a callback is this case

我正在尝试使用 Coinbase Pro node.js API。

当运行这个:

const buyParams = {
  price: '100.00', // USD
  size: '1', // BTC
  product_id: 'BTC-USD',
};
authedClient.buy(buyParams, callback);

我有以下错误callback is not defined

所以我想了解回调的确切工作原理。

这里的回调到底是什么?如果我理解得很好,我需要定义回调函数,但这个函数的目的是什么?我这是因为我需要等待 authedClient 方法的答案?或者这是别的东西?

.buy 方法将在完成时调用提供的回调。
您可能想根据结果做一些事情。
这就是为什么你需要那个回调。

你应该仔细阅读API,但在这种情况下,.buy的第二个参数是你传递给它的函数,在.buy运行后执行。

const buyParams = {
price: '100.00', // USD
size: '1', // BTC
product_id: 'BTC-USD',
};
const cb = ()=> {
 console.log('Buy finished!');
}
authedClient.buy(buyParams, cb);

您应该阅读 API 文档以了解 cb 的参数。但简单来说,它就像代码一样!购买完成后 cb 调用并记录 'Buy Finished';

欢迎提出更多问题。

通常,您使用回调函数是为了在函数完成工作时被调用。但是为什么回调而不是简单地捕获函数的 return 结果呢?由于同步事件。

查看here和下面的代码,以更好地理解异步函数的问题以及为什么javascript程序员使用回调函数解决它

function syncFunc() {
   return "finished!";
}

function asyncFunc() {
  setTimeout(() => {
    return "finished!";
  },1);
}

function asyncFuncWithCallback(callback) {
  setTimeout(() => {
    callback("finished");
  },1);
}

console.log(`syncFunc: ${syncFunc()}`);
console.log(`asyncFunc: ${asyncFunc()}`);
asyncFuncWithCallback((value) => {
     console.log(`asyncFuncWithCallback: ${value}`);
});

通常当任务需要一些时间并且出于以下两个原因之一时使用回调:向您 "give" 您需要很长时间才能产生的值,或者通知您有关事件的信息,通常 "I'm done".

在 NodeJs 中,使用像这样的回调是一种常见的模式 function(error, value){...},其中调用函数时出现错误,如果发生错误 callback(err); 或值 callback(null, result);

对于您的情况,您需要阅读 API-Doc 调用回调的方式和时间。提供了哪些参数等

I'm asking why do I need to define it.

因为 buy() 方法的作者认为这个函数的每个用户都希望在这个任务完成时得到通知,并且想要接收这个回调提供的任何值,所以必须有一个错误,如果您没有提供正确的 callback-function。这就是他抛出错误的原因。