Javascript promisify不是一个函数
我这样写JavaScript:Javascript promisify不是一个函数,javascript,asynchronous,callback,promise,alchemyapi,Javascript,Asynchronous,Callback,Promise,Alchemyapi,我这样写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 keyw
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并试图将数据存储到数据库中
我该怎么做?您应该能够使用
Promise
通过删除返回预期结果。promisify
不是内置的Promise
方法;将传递关键字
替换为返回
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)
})
为了获得一个更通用的
promisify.promisify
函数,没有Bluebird,我最后写了以下内容:
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可能是值得的。除非您使用像Bluebird这样的Promise库,否则就没有
promisify。promisify
?您使用Bluebird吗?promisify将函数作为其参数并返回另一个函数。你不应该将呼叫结果传递给它,尤其是当它没有返回任何结果时。从来没有人向我解释过为什么蓝鸟会存在或者现在需要它,因为承诺是本地的——我的意思是,为什么本地承诺不会做同样的事?@Michael,这里有一个简单的解释: