javascript - 将回调中的变量返回到定义的函数中-NodeJS

标签 javascript node.js

music.playsong = function(vars){
//vars is an array with a Key named "song"
youTube.search(vars["song"], 2, function(error, result) {
  if (error) {
   console.log(error)

   return;
  }else {
     console.log("Success")
    return result
 }
 })
}

我目前将此函数称为

music.playsong(data)

但是在这个函数中我无法访问底层回调并从中获取值。如何让这个 music.playsong() 返回回调结果而不阻塞执行?

最佳答案

您想要使用异步函数作为同步。所以这是不可能的。因此,您需要将方法更改为异步方法,如下所示:

music.playsong = function(vars, cb){
//vars is an array with a Key named "song"
youTube.search(vars["song"], 2, function(error, result) {
  if (error) {
   console.log(error)

   process.nextTick(() => {
    cb(error)
   })
  }else {
     console.log("Success")
     process.nextTick(() => {
      cb(null, result)
     })
 }
 })
}

关于javascript - 将回调中的变量返回到定义的函数中-NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674958/

相关文章:

node.js - 在 TFS 上构建想要从 Node.js 测试项目复制可执行文件

node.js - 当我更改 fieldName 并包含它时,Sequelize 会进行错误的查询

javascript - 从 jQuery 到 vanilla JS

javascript - 如何在 jQuery 中使用占位符?

javascript - NodeJS使用request模块获取包含中文的url

javascript - 有没有一种直接的方法可以将字符串方法映射到 JavaScript 中的字符串数组?另外,为什么这不起作用的解释是什么?

javascript - 字符串似乎不是按值传递

node.js - 像 nodejs 一样的 RedbeanPHP

javascript - 如何在 javascript 中过滤类似于此 SQL 查询中的 GroupBy 和having 的对象?

javascript - Express js和socket io端口3000已经是