Strava-V3 和 Javascript es6 生成器 = 不兼容
Strava-V3 & Javascript es6 generators = not compatible?
我正在使用 node-strava-v3 和 Node 5.7 从 Strava 的 API 检索 JSON 集合。其实很简单,其实没问题。我只想借此机会尝试一下ES6发电机。到目前为止一切顺利,我想我明白了这个概念。但是在这个 Node-Strava-V3 API 包装器的情况下,这些方法永远不会直接返回值或承诺。只允许回调。这让我想到了一个问题:如何将ES6发生器的概念插入到游戏中?
拿这个 :(这需要您可以在 Strava 门户上请求access_token)
var strava = require('strava-v3');
var mainActivity = {id: 504641206};
strava.activities.get(mainActivity, function (err, data){
if(err){ console.log("Strava GET issue: ", err);
/// consume the JSON data here...
};
//rest of the code
但是我可以使用生成器暂停直到这个"strava.activities.get()"方法结束吗? 此方法不返回任何值,不返回承诺。
感谢您的所有建议
福杰
您可以使用
生成器和像 co
这样的库来做到这一点,但现在我们有async
函数(ES2017,可以针对过时的环境进行转译)。
切线相关:任何提供回调的 API 都可以承诺:
const strava = require('strava-v3');
const mainActivity = {id: 504641206};
new Promise((resolve, reject) => {
strava.activities.get(mainActivity, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
}).then(
result => {
//rest of the code
},
error => {
// handle error
}
);
事实上,这种常见的模式被编纂成util.promisify
:
const strava = require("strava-v3");
const promisify = require("util").promisify;
const stravaActivitiesGet = promisify(strava.activities.get);
const mainActivity = {id: 504641206};
stravaActivitiesGet(mainActivity).then(
result => {
//rest of the code
},
error => {
// handle error
}
);
有多个库可以一次(而不是按函数)承诺整个 API,例如 node-promisify
。
如果我们使用 util.promisify
和 async
函数:
const strava = require("strava-v3");
const promisify = require("util").promisify;
const stravaActivitiesGet = promisify(strava.activities.get);
const mainActivity = {id: 504641206};
(async () => {
try {
const data = await stravaActivitiesGet(mainActivity);
//rest of the code
} catch (error) {
// handle error
}
})();
如果您在逻辑中执行其他异步操作,这通常是有意义的。
相关文章:
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 任何浏览器都不支持javascript函数
- 无法't在不使用Javascript刷新页面的情况下多次将值传递给文本框
- 使用Javascript dosn'我不使用javascript
- three.js javascript/raycasting代码与retina显示器Mac不兼容
- PHP JSON编码输出与Javascript Ajax不兼容
- 如何让我的html5功能不兼容警告使用javascript工作
- Strava-V3 和 Javascript es6 生成器 = 不兼容
- 不兼容的 JavaScript
- JavaScript”;对于(var i=0;..){..}“;浏览器不兼容
- Javascript(object.innerhtml)与IE不兼容
- Javascript转CSV功能不兼容IE或Firefox
- IE8的JavaScript不兼容问题
- Javascript工具提示跨浏览器不兼容
- jsf和javascript是不兼容的
- 为什么这个Javascript与Google Chrome不兼容
- Javascript AJAX Upload与Firefox不兼容
- 数组不兼容的 Javascript
- cookie 的 Rails 编码与 JavaScript decodeURIComponent 不兼容