我正在尝试制定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
方法的答案?还是其他?
答案 0 :(得分:1)
.buy
方法将在完成时调用提供的回调。
您可能想根据结果做一些事情。
这就是为什么您需要该回调。
答案 1 :(得分:1)
通常,当任务花费一些时间并且出于以下两个原因之一时,将使用回调:向您“授予”花费很长时间进行处理的值,或向您通知事件,通常为“我已经完成”。
在NodeJs中,使用诸如function(error, value){...}
这样的回调是一种常见模式,其中,如果发生callback(err);
或值callback(null, result);
在您的情况下,您需要在API-Doc中阅读调用回调的方式和时间。提供了哪些参数,等等。
我在问为什么需要定义它。
由于buy()
方法的作者认为完成此任务的每个用户都希望在完成该操作时得到提名,并且希望获得该回调函数提供的任何值,因此必须有一个错误,如果您没有提供适当的回调函数。这就是他抛出错误的原因。
答案 2 :(得分:0)
您应该仔细阅读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调用并记录“购买完成”;
随时问更多问题。
答案 3 :(得分:0)
通常,您使用回调函数以便在函数完成工作时被调用。但是,为什么回调而不是简单地捕获函数的返回结果呢?由于同步事件。
请查看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}`);
});