小编Ber*_*rgi的帖子

为什么thunkify/yield总是返回一个数组?

我有一个thunk名为logInline(改编自Co文档).

我注意到thunkified get总是似乎是yield一个数组.这是设计的吗?它是这样thunkify做的,还是标准的一部分yield

var co = require('co'),
  get = thunkify(request.get);

var logInline = co(function *(){
  var google = yield get('http://google.com'); 
  console.log(google[0].statusCode);
})

logInline()
Run Code Online (Sandbox Code Playgroud)

请注意,此处的变量'google'始终是一个数组.为什么?请注意,request.get通常返回err, response(即没有数组).

脚本BTW返回200google.com返回的任何其他响应代码.

产量文件是相当稀疏ATM.

编辑: Thunk并不总是返回数组.例如,如果var readFile = thunkify(fs.readFile);:

var fileContents = yield readFile('myfile', 'utf8');
log(fileContents);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,fileContents不会在数组中返回.那么为什么谷歌在一个阵列里? 在thunkify中似乎有一些东西可以控制thunk返回的内容

javascript yield thunk node.js co

1
推荐指数
1
解决办法
1335
查看次数

Javascript推送到多维数组中的元素

我需要生成一个格式为:

products : 
[
    {
        "product_id": 32,
        "quantity": 2
    },
    {
        "product_id": 33,
        "quantity": 2,
        "product_options": 
        [
            {
                "id": 87,
                "value": 10
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法完成product_id和数量:

productID = 32;
prodQuantity = 2;
var row2 = {};
row2.product_id = productID;
row2.quantity = prodQuantity;
product.push(row2);

productID = 33;
prodQuantity = 2;
var row2 = {};
row2.product_id = productID;
row2.quantity = prodQuantity;
product.push(row2);
Run Code Online (Sandbox Code Playgroud)

如何使用id和value添加元素product_options.

我尝试过各种变化:

var row3 = {};
row3.id = 87;
row3.value = 10;    
cartArray['product_options'].push(row3);
Run Code Online (Sandbox Code Playgroud)

我用它管理它:

var prodQuantity = app.getValue('popupDropdown').value;
var …
Run Code Online (Sandbox Code Playgroud)

javascript multidimensional-array

1
推荐指数
1
解决办法
254
查看次数

`this`context如何在立即执行的函数中起作用?

有人可以向我解释这里发生的事情导致我的属性被附加到窗口对象:

var MyObject = (function () {    
    this.property1 = "prop1";

    return this;
})();
// window.property1 now exists as well as MyObject.property1
Run Code Online (Sandbox Code Playgroud)

这是"正确"的方式:

var MyObject = (function () {
    var MyObject = {};
    MyObject.property1 = "prop1";

    return MyObject;
})();
// only MyObject.property1 now exists
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
48
查看次数

Jquery.第一个行为

所以我有一个简单的html页面:

<h1>Start</h1>
<canvas class="myCanvas" width="400" height="400"></canvas>
<canvas class="myCanvas" width="400" height="400"></canvas>
Run Code Online (Sandbox Code Playgroud)

在jquery我做,

> $(".myCanvas")
| [<canvas class=?"myCanvas" width=?"400" height=?"400">?, 
|  <canvas class=?"myCanvas" width=?"400" height=?"400">?]
Run Code Online (Sandbox Code Playgroud)

然后,

> $(".myCanvas").first()
| [<canvas class=?"myCanvas" width=?"400" height=?"400">?]
Run Code Online (Sandbox Code Playgroud)

我认为我应该在第一个()方法的调用中得到一个元素,就像在

> $(".myCanvas").get(0)
| <canvas class=?"myCanvas" width=?"400" height=?"400">?
Run Code Online (Sandbox Code Playgroud)

那么为什么第一个方法返回一个数组..?

javascript jquery

1
推荐指数
1
解决办法
51
查看次数

JavaScript如何获取Promise onSuccess在promise之外分配的变量值

我正在whiting firefox扩展.我得到了读取文件内容的功能:

var HelloWorld = {...
getData: function () {
        var env = Components.classes["@mozilla.org/processenvironment;1"].getService(Components.interfaces.nsIEnvironment);
        var path = env.get("TEMP");
        path = path + "\\lastcall.txt"
        alert(path);
        Components.utils.import("resource://gre/modules/osfile.jsm");
        let decoder = new TextDecoder(); 
        let promise = OS.File.read(path); 
        var line = null;
        promise = promise.then(
            function onSuccess(array) {
            line = decoder.decode(array)
            alert(line);
            return line;       
            }
        );
        alert("ducky:"+line+"duck");
    },
...};
Run Code Online (Sandbox Code Playgroud)

我除了那line将是相同的,因为声明在函数外.从内心的警报,我得到了适当的价值,但从我得到的外部duckynullduck.如何解决它

javascript scope firefox-addon promise

1
推荐指数
1
解决办法
840
查看次数

Javascript数组比C++中的数组效率低

我正在读一本关于JS数据结构的书,它提到:

javascript中的数组被实现为对象,导致它们比使用其他语言(如C++和Java)构建的数组效率低.

为什么?

javascript arrays

1
推荐指数
1
解决办法
579
查看次数

什么是在必要时将`this`变成`forEach`回调的首选方法?

我知道这听起来像是一个意见问题,但我是一名初级JavaScript技能人员,并希望了解以下每种方法获得this一个功能的技术优点和缺点(this当然,它有自己的功能).

让我们说我写 - 这是我的一个现实生活中的例子 -

Calculator.prototype.Initialize = function () {
    // Fill in all regions in the RegionsChecked array
    this.Data.forEach(function(region){
        this.RegionsChecked.push(region.RegionName);
    });
    …
Run Code Online (Sandbox Code Playgroud)

我意识到了

"哎呀,thisin this.RegionsChecked应该实际引用Calculator调用Intialize 函数的函数."

我要么通过这样做来解决这个问题

var that = this;
this.Data.forEach(function(region){
    that.RegionsChecked.push(region.RegionName);
});
Run Code Online (Sandbox Code Playgroud)

要么

(function(calc){
    this.Data.forEach(function(region){
        calc.RegionsChecked.push(region.RegionName);
    });
})(this);
Run Code Online (Sandbox Code Playgroud)

我想知道哪个更好或者有更好的方式(以及为什么).

javascript oop inheritance

1
推荐指数
1
解决办法
60
查看次数

Scala中类参数的val是什么?

我有时会看到类似下面的东西.

class Test(val str: String){
}
Run Code Online (Sandbox Code Playgroud)

我写了一些示例代码,val但我没有看到常见声明和方式之间有任何区别val.

他们之间有什么区别?什么时候应该使用?

scala

1
推荐指数
1
解决办法
178
查看次数

截断 Postgres 中除列表中提供的表之外的所有表

我想截断整个数据库,同时保持序列同一性。我想出了这样的事情:

WITH tables_to_be_truncated AS (
SELECT table_name
    FROM information_schema.tables
    WHERE table_type='BASE TABLE'
    AND table_schema='public'
    AND table_name NOT IN ('admins', 'admin_roles')
)
TRUNCATE TABLE (SELECT table_name FROM tables_to_be_truncated) CONTINUE IDENTITY RESTRICT;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR:  syntax error at or near "TRUNCATE"
LINE 9: TRUNCATE TABLE (SELECT table_name FROM tables_to_be_truncated...
Run Code Online (Sandbox Code Playgroud)

我确实有权截断表,并且当我运行单个表时,TRUNCATE TABLE access_tokens它工作得很好。

我也尝试过这个

ERROR:  syntax error at or near "TRUNCATE"
LINE 9: TRUNCATE TABLE (SELECT table_name FROM tables_to_be_truncated...
Run Code Online (Sandbox Code Playgroud)

但效果不太好。

从我在其他帖子中看到的情况来看,人们正在用函数来做这件事。老实说,我不想走这条路,但如果这是唯一的方法......

postgresql truncate dynamic-sql

1
推荐指数
1
解决办法
3411
查看次数

异步生成器在解决时产生承诺结果

假设我想同时获取 10 个 url,并在收到响应时对其进行处理(其顺序可能与它们在原始列表中出现的顺序不同)。忽略拒绝的可能性,一种方法是简单地为每个 Promise 附加一个“then”回调,然后等待它们全部使用完成Promise.all()

const fetch_promises = [
  fetch("https://cors-demo.glitch.me/allow-cors"),
  fetch("/"),
  fetch("."),
  fetch(""),
  fetch("https://enable-cors.org"),
  fetch("https://html5rocks-cors.s3-website-us-east-1.amazonaws.com/index.html"),
  fetch("https://api.github.com"),
  fetch("https://api.flickr.com/services/rest/"),
];
const processing_promises = [];
for (const fetch_promise of fetch_promises) {
  processing_promises.push(fetch_promise.then(response => {
    // Process response.  In this example, that means just
    // print it.
    console.log("got a response: ",response);
  }));
}
await Promise.all(processing_promises);
Run Code Online (Sandbox Code Playgroud)

切换到输出更清晰、更具确定性的示例:

const sleep = millis => new Promise(resolve=>setTimeout(resolve, millis));
const sleep_promises = [
    sleep(3000).then(()=>"slept 3000"),
    sleep(1000).then(()=>"slept 1000"),
    sleep(5000).then(()=>"slept 5000"),
    sleep(4000).then(()=>"slept 4000"),
    sleep(2000).then(()=>"slept 2000"),
];
const processing_promises …
Run Code Online (Sandbox Code Playgroud)

javascript generator fetch promise async-await

1
推荐指数
1
解决办法
1463
查看次数