Promise.promisify 不是函数

Promise.promisify is not a function

我是这样写的JavaScript:

var keys=null;
var promise=Promise.promisify(alchemyapi.keywords("url",myUrl,{},function(response) {
    var keywords = { url:myUrl, response:JSON.stringify(response,null,4), results:response['keywords'] };
                return keywords;
            }));
promise.then(
                (result)=>{
                    var keys=result;
                    console.log(keys);
                },
                (error)=>console.log(error)
            );

我正在使用 AlchemyAPI 并尝试存储我进入数据库的数据 我该怎么办?

您应该能够通过删除 .promisify 来使用 Promise 到 return 预期结果,这不是内置的 Promise 方法;在 Promise 构造函数中替换 keywordsresolve return

var keys = null
, promise = new Promise(function(resolve) {
    alchemyapi.keywords("url", myUrl, {}, function(response) {
      var keywords = {url: myUrl
                      , response: JSON.stringify(response,null,4)
                      , results:response['keywords'] 
                     };
      resolve(keywords);
      // error handling ?
    })
  }).then(function(result) {
      keys = result;
      console.log(keys)
  }, function(err) {
      console.log(err)
  })

对于没有 Bluebird 的更通用的 Promise.promisify 函数,我最后写了这个:

function promisify(func) {
    return function promiseFunc(options) {
        return new Promise(function executor(resolve, reject) {
            func(options, function cb(err, val) {
                if (err) {
                    return reject(err);
                } else {
                    return resolve(val);
                }
            });
        });
    }
}

希望其他人觉得这有帮助,但在大多数情况下,可能值得导入 Bluebird。