我正在尝试创建一个帮助函数,该函数会进行异步调用,这是我的数据设置的一部分,用于执行protactor测试。有没有一种方法可以等待函数的响应,然后继续进行测试,这是我正在尝试做的。等待来自Async,Protractor,nodejs的响应
所以基本上测试应该等到异步调用lo loaddata()完成。我已阅读有关承诺的使用情况,但无法成功实施。
"use strict";
describe('sample passing test spec', function() {
describe('sample passing test suite', function() {
loaddata();
it('sample passing test', function() {
datall();
expect("1").toEqual("2");
});
});
});
loaddata() is basically making a socket connection
function loaddata(){
var net = require('net');
var client = new net.Socket();
client.connect(20000, '127.0.0.1', function() {
console.log('Connected');
client.write('Hello, server! Love, Client\n');
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy(); // kill client after server's response
});
client.on('close', function() {
console.log('Connection closed');
});
return "function execution over"
}
在Javascript中,你不能“等待”做一个异步操作。你可以安排一个回调被调用,或者返回一个Promise,当事件结束时触发它的'.then()'处理程序。其他代码将继续运行,而异步操作正在做它的事情。你不能用Javascript等待。可能值得一读[如何从异步操作返回响应?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) 。 – jfriend00