我已经将我的代码重组为承诺,并构建了一个由多个回调组成的精彩长扁平承诺链.then().最后我想返回一些复合值,并且需要访问多个中间承诺结果.但是,序列中间的分辨率值不在最后一个回调的范围内,我该如何访问它们?
function getExample() {
return promiseA(…).then(function(resultA) {
// Some processing
return promiseB(…);
}).then(function(resultB) {
// More processing
return // How do I gain access to resultA here?
});
}
Run Code Online (Sandbox Code Playgroud) const vegetableColors = {corn: 'yellow', peas: 'green'};
const {*} = vegetableColors;
console.log(corn);// yellow
console.log(peas);// green
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到或弄清楚如何做到这一点,但我真的以为我以前见过它!:P
注:我使用的是巴贝尔与stage设置为0;
背景:我正试图在JSX中干燥而不是参考this.state或this.props在任何地方.如果数据发生变化,也不必继续为destructure添加属性.
我有变量app.js:
var G = {};
module.exports = G;
var DATA = G.DATA = 'DATA';
var F1 = G.F1?= function(val)
{
return val;
};
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以在对象下导出变量G,同时可以直接访问变量DATA而无需G.前缀.
到现在为止还挺好.
现在,我想运行一个测试了app.js在test.js:
var G = require('./app.js');
console.log(G.DATA); // -> DATA
Run Code Online (Sandbox Code Playgroud)
这有效,但我也想直接写入DATA没有G.前缀的变量console.log(DATA); // -> DATA
当然,我可以做到
var DATA = G.DATA;对于每个变量(属性)导出和所需的模块G对象,但显然,手动将每个变量添加到测试文件以对应G对象是一个繁琐的过程.
有没有办法自动完成?
到目前为止,我从此感到悲观
JS function包含var在自己的范围内,因此理论上没有办法var为每个对象属性提供辅助函数.
谢谢.
PS.我想,以避免任何eval或 …
javascript ×3
bluebird ×1
ecmascript-6 ×1
ecmascript-7 ×1
es6-promise ×1
node.js ×1
promise ×1
scope ×1