Javascript 尝试将Braintree嵌套回调转换为NodeJS异步/等待语法

Javascript 尝试将Braintree嵌套回调转换为NodeJS异步/等待语法,javascript,node.js,async-await,braintree,Javascript,Node.js,Async Await,Braintree,我正在尝试将此Braintree嵌套回调转换为async/await: var stream = gateway.transaction.search(function (search) { search.customerId().is(braintreeCustomerId); }, function (err, response) { response.each(function (err, transaction) { console.log(trans

我正在尝试将此Braintree嵌套回调转换为async/await:

  var stream = gateway.transaction.search(function (search) {
    search.customerId().is(braintreeCustomerId);
  }, function (err, response) {
    response.each(function (err, transaction) {
      console.log(transaction);
    });
  });
我尝试了这种方法,但得到了
未定义的
响应输出:

  await gateway.transaction.search(async (search) => {
    const response = await search.customerId().is(braintreeCustomerId);
    console.log(response)
  })

我做错了什么?

异步
函数通常不应该与不知道承诺的API一起使用,因为这会导致承诺失控,而承诺不会被链接

如果
gateway.transaction.search
不支持承诺,则需要承诺:

const search = util.promisify(gateway.transaction.search).bind(gateway.transaction);

const searchResult = await search();
const response = searchResult.customerId().is(braintreeCustomerId);

如果
searchResult.customerId().is(braintreeCustomerId)
不返回承诺,则不需要对其进行
wait
ed.

async
函数通常不应与不知道承诺的API一起使用,因为这会导致承诺失控,而不会被链接

如果
gateway.transaction.search
不支持承诺,则需要承诺:

const search = util.promisify(gateway.transaction.search).bind(gateway.transaction);

const searchResult = await search();
const response = searchResult.customerId().is(braintreeCustomerId);

如果
searchResult.customerId().is(braintreeCustomerId)
不返回承诺,则不需要
wait
ed。

承诺只会帮助您完成最终的异步结果回调,而不是谓词

const response = await gateway.transaction.search(function (search) {
  search.customerId().is(braintreeCustomerId);
});
response.each(function (err, transaction) {
  console.log(transaction);
});

这假设
transaction.search
已经支持承诺。如果没有,您会。

承诺只会帮助您完成最终的异步结果回调,而不是谓词

const response = await gateway.transaction.search(function (search) {
  search.customerId().is(braintreeCustomerId);
});
response.each(function (err, transaction) {
  console.log(transaction);
});

这假设
transaction.search
已经支持承诺。如果没有,您将。

什么是
?你需要它吗?不,我不需要它-它只是被文档中的示例所使用,它是
?你需要它吗?不,我不需要它-它只是在文档中的示例中使用的