在我的项目中,我使用 promise(下面的代码)pending,当我使用 keyword 时,该 promise 怎么可能await。有人可以帮我弄清楚,我做错了什么吗?
const getTs = async () => {
const response = await axios.get('...')
.then(res => res.data)
.catch(() => 'ERROR');
return response;
};
console.log(getTs()); // Promise { <pending> }Run Code Online (Sandbox Code Playgroud)
我是async等待和承诺的初学者.我阅读了一些文章并观看了一些教程视频,但我仍然无法完全理解它.所以我有一个我现在正在处理的代码
}).then(function() {
var responseArray = []
[url1,url2,url3,url4].forEach((url)=>{
makeRequest(url)
}).then((response)=>{
responseArray.push(response)
})
return responseArray
})
Run Code Online (Sandbox Code Playgroud)
因此,如预期的那样,responseArray空的返回.我需要让它等到每个makerequest(url)的所有响应都被推送到responseArray.
这是我的尝试
}).then(function() {
var responseArray = []
[url1,url2,url3,url4].forEach((url)=>{
async makeRequest(url)
}).then((response)=>{
await responseArray.push(response)
})
return responseArray
})
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
我想net::Ipv4Addr::LOCALHOST在模式匹配时使用常量过滤掉 IPv4 localhost 地址:
use get_if_addrs; // 0.5.3
use std::net;
fn main() -> std::io::Result<()> {
assert_eq!(
"127.0.0.1".parse::<net::Ipv4Addr>().unwrap(),
net::Ipv4Addr::LOCALHOST
);
{
let ifaces = get_if_addrs::get_if_addrs().unwrap();
for iface in ifaces {
match iface.addr {
get_if_addrs::IfAddr::V4(get_if_addrs::Ifv4Addr {
ip: _,
netmask: _,
broadcast: None,
}) => (),
get_if_addrs::IfAddr::V4(get_if_addrs::Ifv4Addr {
ip: net::Ipv4Addr::LOCALHOST,
netmask: _,
broadcast: _,
}) => (),
get_if_addrs::IfAddr::V4(addr) => println!("{:?}", addr),
get_if_addrs::IfAddr::V6(_) => (),
}
}
}
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
use get_if_addrs; // 0.5.3
use std::net;
fn main() -> std::io::Result<()> { …Run Code Online (Sandbox Code Playgroud) 即使我使用以下命令运行具有高堆内存的节点时,我也会收到以下错误: node --max-old-space-size=8000 manipulateFiles.js
FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory
1: 0x8dc510 node::Abort() [node]
2: 0x8dc55c [node]
3: 0xad9b5e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xad9d94 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xec7bf2 [node]
6: 0x102d7b2 v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::Allocate(v8::internal::Isolate*, int, v8::internal::PretenureFlag) [node]
7: 0x1030946 v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::Rehash(v8::internal::Handle<v8::internal::OrderedHashMap>, int) [node]
8: 0x1030f69 v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::EnsureGrowable(v8::internal::Handle<v8::internal::OrderedHashMap>) [node]
9: 0x1114c7e v8::internal::Runtime_MapGrow(int, v8::internal::Object**, v8::internal::Isolate*) [node]
10: 0x908bb15be1d
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
崩溃时使用的堆内存量为1.79G。可用量为6.15G。我使用了 v8 模块并process获得了这些数字。
所以显然除了堆大小之外还有其他原因导致了这个问题。该模块基本上扫描一个大型 CSV 文件并构建一个 Map 以供以后在此过程中参考。该映射最多可以有 …
我希望得到一个列表,列出所有要评估的值,true或者false使用差等式检查!=,==甚至是if()
我有一个列表,我收集了多年,但它与我的PC死了
我有一个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返回的内容
有人可以向我解释这里发生的事情导致我的属性被附加到窗口对象:
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) 所以我有一个简单的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)
那么为什么第一个方法返回一个数组..?
我正在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.如何解决它
我有时会看到类似下面的东西.
class Test(val str: String){
}
Run Code Online (Sandbox Code Playgroud)
我写了一些示例代码,val但我没有看到常见声明和方式之间有任何区别val.
他们之间有什么区别?什么时候应该使用?
javascript ×8
promise ×3
async-await ×2
node.js ×2
co ×1
dictionary ×1
ecmascript-6 ×1
es6-map ×1
evaluate ×1
foreach ×1
ip-address ×1
jquery ×1
rust ×1
scala ×1
scope ×1
thunk ×1
v8 ×1
yield ×1