等待来自Async,Protractor,nodejs的响应

我正在尝试创build一个帮助器函数,这个函数是一个asynchronous调用,它是我的数据设置的一部分,用于protactortesting。 有没有一种方法可以等待函数的响应,然后继续进行testing,这是我正在做的。

所以基本上testing应该等到asynchronous调用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" } 

你将需要调整loaddata返回一个承诺这个承诺会把量angular器放在控制stream上 – 一个待解决的承诺队列:

 function loaddata() { var deferred = protractor.promise.defer(); 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 deferred.fulfill(true); }); client.on('close', function() { console.log('Connection closed'); }); return deferred.promise; } 

如果这是在testing运行之前需要全局执行的事情,把它放到onPrepare()并返回。 如果loaddata返回一个promise,那么Protractor将首先parsing它,然后才运行testing:

 onPrepare: function () { return loaddata(); },